Android快速退出APP的几种方式

这篇具有很好参考价值的文章主要介绍了Android快速退出APP的几种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方式一

将主活动设置为SingleTask模式,可以确保每次启动主活动时,都是同一个实例,提高了内存利用率。在退出的活动中,可以通过Intent将返回主活动,并且重写主活动的onNewIntent方法,在其中加入一句finish()结束。

  1. 在AndroidManifest.xml文件中将主活动设置为SingleTask模式:
<activity android:name=".MainActivity"
          android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  1. 在退出的活动中,通过Intent返回到主活动:
public class ExitActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exit);

        Button btnExit = findViewById(R.id.btn_exit);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ExitActivity.this, MainActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
        });
    }
}
  1. 在MainActivity中重写onNewIntent方法,在其中加入一句finish():
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyApplication.getInstance().addActivity(this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        finish();
    }
}

这样,每次返回到主活动时,都会关闭上一个实例,确保内存利用率。

方式二

通过广播来完成退出功能,接受广播后退出
可以通过发送一个自定义的广播来实现退出应用程序的功能。具体实现步骤如下:

  1. 在MyApplication中添加发送广播的方法:
public void sendExitBroadcast() {
    Intent intent = new Intent("com.example.exit");
    sendBroadcast(intent);
}
  1. 在需要退出应用程序的地方调用MyApplication.getInstance().sendExitBroadcast()方法,发送广播:
public class ExitActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exit);

        Button btnExit = findViewById(R.id.btn_exit);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyApplication.getInstance().sendExitBroadcast();
            }
        });
    }
}
  1. 在MyApplication中注册广播接收器,接收广播后退出应用程序:
public class MyApplication extends Application {

    private static MyApplication instance;
    private Stack<Activity> activityStack;
    private BroadcastReceiver exitReceiver;

    private MyApplication() {
        activityStack = new Stack<>();
    }

    public static synchronized MyApplication getInstance() {
        if (instance == null) {
            instance = new MyApplication();
        }
        return instance;
    }

    public void addActivity(Activity activity) {
        activityStack.push(activity);
    }

    public void exit() {
        while (!activityStack.isEmpty()) {
            Activity activity = activityStack.pop();
            activity.finish();
        }
        System.exit(0);
    }

    public void sendExitBroadcast() {
        Intent intent = new Intent("com.example.exit");
        sendBroadcast(intent);
    }

    @Override
    public void onCreate() {
        super.onCreate();

        exitReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                exit();
            }
        };
        registerReceiver(exitReceiver, new IntentFilter("com.example.exit"));
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        unregisterReceiver(exitReceiver);
    }
}

这样,当发送广播时,MyApplication中的广播接收器就会接收到广播并退出应用程序。

方式三

定义一个栈,写一个自定义的MyApplication,利用单例模式去单独对Activty进行管理,在每个Activity的onCreate()方法中调用MyApplication.getInstance().addActivity(this)将当前的Activity添加到栈中统一管理,如果需要退出应用程序时再调用MyApplication.getInstance().exit()方法直接就完全退出了应用程序。
需要退出时只要把进栈的活动一个个循环退出就可以。
以下是实现代码:

public class MyApplication extends Application {

    private static MyApplication instance;
    private Stack<Activity> activityStack;

    private MyApplication() {
        activityStack = new Stack<>();
    }

    public static synchronized MyApplication getInstance() {
        if (instance == null) {
            instance = new MyApplication();
        }
        return instance;
    }

    public void addActivity(Activity activity) {
        activityStack.push(activity);
    }

    public void exit() {
        while (!activityStack.isEmpty()) {
            Activity activity = activityStack.pop();
            activity.finish();
        }
        System.exit(0);
    }
}

在每个Activity的onCreate()方法中调用MyApplication.getInstance().addActivity(this):

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyApplication.getInstance().addActivity(this);
    }
}

需要退出应用程序时再调用MyApplication.getInstance().exit()方法:文章来源地址https://www.toymoban.com/news/detail-536158.html

public class ExitActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exit);

        Button btnExit = findViewById(R.id.btn_exit);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyApplication.getInstance().exit();
            }
        });
    }
}

到了这里,关于Android快速退出APP的几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/ChenYiRan123456/article/details/130943129

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包