Android广播退出报错,unregisterReceiver 解决方法
- by chenxue4076
- 10 years ago
Android 广播 unregisterReceiver 错误
使用 registerReceiver 和 unregisterReceiver 的时候 前面加上了
getApplicationContext().
代码是: getApplicationContext().unregisterReceiver(myReceiver);
如果使用这些代码未能达到你的目的,那么下面的这段摘自网络的信息或许会有帮助。
下面的是网上的一些参考资料:
这个问题一直困扰着我,试了n种方式,都不行,在网上搜了一圈,没有能用的:
1.ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses(package);
不行
2.android.os.Process.killProcess(android.os.Process.myPid());
也不行
3.manager.restartPackage(package);
还是不行
4.
Intent MyIntent = new Intent(Intent.ACTION_MAIN);
MyIntent.addCategory(Intent.CATEGORY_HOME);
startActivity(MyIntent);
finish();
这个只是退回到桌面,如果打开多个Activity关闭重新打开也会有问题,还是还是不行
看到有说广播机制,发现是个好东东,能彻底解决这个问题,废话不说看代码:
Java代码
//写一个广播的内部类,当收到动作时,结束activity private BroadcastReceiver br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { close(); unregisterReceiver(this); } }; @Override protected void onResume() { super.onResume(); //在当前Activity中注册广播 IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_MAIN); registerReceiver(this.br, filter); //注册 System.out.println("Activity02----------------------------onResume"); } /** * 关闭 */ public void close(){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); sendBroadcast(intent); //该函数用于发送广播 // finish(); System.exit(0); } }别人写的缺了个地方(unregisterReceiver)这个必须要加,找了个最简单的方法
(6346)