public class ApplicationActivity extends Activity {
//写一个广播的内部类,当接受到广播时结束finish掉
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
@Override
public void onResume() {
super.onResume();
//在当前的activity中注册广播
IntentFilter filter = new IntentFilter();
filter.addAction(Const.CLOSE_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);
}
}
//发送关闭activity的广播
private void close() {
Intent intent = new Intent();
intent.setAction(Const.CLOSE_ACTION);
this.sendBroadcast(intent);
super.finish();
}
千万不要忘记在activity结束时删除掉广播哦
@Override
protected void onDestroy() {
Log.d("unregisterReceiver", "---------------");
this.unregisterReceiver(this.broadcastReceiver);
super.onDestroy();
}
在网上找了n中方法加调试都无法实现我想要的效果
1 、ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses("package");
这个方法是在2.1之前好用 2.2以后的就不好用了调试了半天鄙视下
2、 android.os.Process.killProcess(android.os.Process.myPid());
这个方法也不行 好像是 2.2 刚出的 具体也没怎么了解 反正不好用啦
3 、System.exit(0)
能够退出,但只能实现一个activity的正常退出,实现完全退出还不行
4、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
附下代码:
这样就实现了,只不过测试效果实现了 但是在手机上点开应用程序管理 强制停止还是能够点击的 看了别人的都不能点击这点以后还要继续考究啊
这种方法虽然能够实现 但在开发过程中又遇到了新的问题 ,当我在做一个电话咨询的功能时发现 点击电话咨询 进入一个新的应用中 当我挂断电话 back键返回到 我点击电话咨询的界面 然后再在此界面发送广播的时候 发现只能finish()掉当前的界面 其他的再back 都能出来 广播失效 现在还不明白问题出在哪里 因为没有发现广播 被卸载 希望有遇到过此问题的朋友 发表下观点