android中实现完全退出程序方法(退出所有activity)
这是一个很多很多人都会遇到的问题,我也试过了很多方法,都不怎么好用。
比如:
System.exit(0);
不行。
还有什么跳转到第一个activity,同时把栈顶的activity全部清除,最后再finish();还是不行。。不知道为什么。
这里是我自己的一个方法,效果非常好。
原理:在每个activity都注册一个广播接收器,用来接收关闭activity的广播。当需要退出程序的时候就发送一条关闭activity的广播,这样所有的activity都会接收到,然后所有activity都会自己finish了。
packagecom.example.exitsystem;
importandroid.app.Activity; importandroid.content.BroadcastReceiver; importandroid.content.Context; importandroid.content.Intent; importandroid.content.IntentFilter; importandroid.os.Bundle;
/** *所有activity都继承此类,同时也就等于注册了广播, *当需要完全退出系统的时候就可以发送广播, *action为com.example.exitsystem.system_exit(自定义), *这样就可以随时退出所有的activity了 *@authorLinZhiquan * */ publicclassSuperActivityextendsActivity{ /**广播action*/ publicstaticfinalStringSYSTEM_EXIT="com.example.exitsystem.system_exit"; /**接收器*/ privateMyReceiverreceiver; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //注册广播,用于退出程序 IntentFilterfilter=newIntentFilter(); filter.addAction(SYSTEM_EXIT); receiver=newMyReceiver(); this.registerReceiver(receiver,filter); } @Override protectedvoidonDestroy(){ //记得取消广播注册 this.unregisterReceiver(receiver); super.onDestroy(); } privateclassMyReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ finish(); } } }