android2.2使用广播机制进行完全退出

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 都能出来  广播失效 现在还不明白问题出在哪里 因为没有发现广播 被卸载  希望有遇到过此问题的朋友  发表下观点

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值