这个问题一直困扰着我,试了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代码
  1. publicabstractclassEnterActivityextendsBaseActivity{
  2. ...
  3. //写一个广播的内部类,当收到动作时,结束activity
  4. privateBroadcastReceiverbroadcastReceiver=newBroadcastReceiver(){
  5. @Override
  6. publicvoidonReceive(Contextcontext,Intentintent){
  7. close();
  8. unregisterReceiver(this);//这句话必须要写要不会报错,不写虽然能关闭,会报一堆错
  9. }
  10. };
  11. @Override
  12. publicvoidonResume(){
  13. super.onResume();
  14. //在当前的activity中注册广播
  15. IntentFilterfilter=newIntentFilter();
  16. filter.addAction(Attribute.PAGENAME);
  17. registerReceiver(this.broadcastReceiver,filter);//注册
  18. }
  19. /**
  20. *关闭
  21. */
  22. publicvoidclose(){
  23. Intentintent=newIntent();
  24. intent.setAction(Attribute.PAGENAME);//说明动作
  25. sendBroadcast(intent);//该函数用于发送广播
  26. finish();
  27. }
  28. ...
  29. }


别人写的缺了个地方(unregisterReceiver)这个必须要加,找了个最简单的方法

更多相关文章

  1. Android(安卓)开发中的 Handler ,Thread ,Message ,Runnable 的
  2. Android中3种方法实现back键动作
  3. Android(安卓)-> 如何避免Handler引起内存泄露
  4. Android开发学习笔记:Android很有用的代码片段
  5. 注意:Android中Handler引起的内存泄露
  6. 新年过后献上关于Android内存泄漏的种种总结
  7. 解决requestFeature() must be called before adding content错
  8. Android中LayoutInflater实例
  9. Android周报第二十四期

随机推荐

  1. Android架构分析之Android消息处理机制(二
  2. 在deepin系统中adb操作android文件的方法
  3. Android(安卓)显示不满屏的问题解决
  4. Android六大基本布局详解
  5. android的selector的用法
  6. Android布局之RelativeLayout学习
  7. android 模拟器命令 转载
  8. Android中的数据存储与传输
  9. Android笔记1
  10. android:launchMode="singleTask" 与 onN