这是一个很多很多人都 会遇到的问题,我也试过了很多方法,都不怎么好用。
比如:
System.exit(0);不行。
还有什么跳转到第一个activity,同时把栈顶的activity全部清除,最后再finish();还是不行。。不知道为什么。
这里是我自己的一个方法,效果非常好。
原理:在每个activity都注册一个广播接收器,用来接收关闭activity的广播。当需要退出程序的时候就发送一条关闭activity的广播,这样所有的activity都会接收到,然后所有activity都会自己finish了。
package com.example.exitsystem; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; /** * 所有activity都继承此类,同时也就等于注册了广播, * 当需要完全退出系统的时候就可以发送广播, * action为com.example.exitsystem.system_exit(自定义), * 这样就可以随时退出所有的activity了 * @author LinZhiquan * */ public class SuperActivity extends Activity { /** 广播action */ public static final String SYSTEM_EXIT = "com.example.exitsystem.system_exit"; /** 接收器 */ private MyReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //注册广播,用于退出程序 IntentFilter filter = new IntentFilter(); filter.addAction(SYSTEM_EXIT); receiver = new MyReceiver(); this.registerReceiver(receiver, filter); } @Override protected void onDestroy() { //记得取消广播注册 this.unregisterReceiver(receiver); super.onDestroy(); } private class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { finish(); } } }
package com.example.exitsystem; import android.os.Bundle; /** * 普通activity, 继承SuperActivity * @author LinZhiquan * */ public class MainActivity extends SuperActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
需要退出程序的时候发送一条广播即可。
Intent intent = new Intent(); intent.setAction(SuperActivity.SYSTEM_EXIT); sendBroadcast(intent);
完全退出程序,退出所有activity,布布扣,bubuko.com
原文:http://blog.csdn.net/qiantujava/article/details/22756721