Android中退出多个Activity的两个经典方法
2017-04-20 08:48
295 查看
一种把每个activity用集合记住,然后逐一干掉;另一种思路是使用广播。
Activity1代码:
Activity2代码:
activity2:启动广播
方法一、用list保存activity实例,然后逐一干掉
创建一个外部类继承Application用来存放activitypublic class MyActvity extends Application { //创建一个集合,用来存放activity的对象 ArrayList<Activity>list=new ArrayList<>(); //声明一个本类的对象 private static MyActvity instance; public MyActvity() { } //创建一个方法,用来初始化MyActivity的对象,并且初始化的对像的返回 public synchronized static MyActvity getInstance(){ if (instance==null){ instance=new MyActvity(); } return instance; } //调用此方法用来向集合当中添加activity对象 public void addActivity(Activity activity){ list.add(activity); } //判断activity是否已经在集合当中 public boolean isexitlist(Activity activity){ if (list.contains(activity)){ return true; } return false; } //当调用此方法的时候,关闭所有的activity public void exit(){ for (Activity activity:list){ activity.finish(); } //退出当前的MyActivity System.exit(0); } @Override public void onLowMemory() { super.onLowMemory(); //当系统的存储空间不够的时候,调用系统的垃圾回收期,清理里面的垃圾 System.gc(); } }
Activity1代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //调用存放activity类 MyActvity instance = MyActvity.getInstance(); //判断存放activity类是否存放该activity,不存在加入类 if (!instance.isexitlist(this)){ instance.addActivity(this); } Intent intent = new Intent(this, Main2Activity.class); startActivity(intent); } }
Activity2代码:
public class Main2Activity extends Activity { private MyActvity instance; /** * Called when the activity is first created. */ @Override+ super.onCreate(savedInstanceState); setContentView(R.layout.sdfa); Button bt= (Button) findViewById(R.id.bt); instance = MyActvity.getInstance(); if (!instance.isexitlist(this)){ instance.addActivity(this); } bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //调用exit()方法销毁里面所有activity instance.exit(); } }); } }
方法二、使用广播在activity里注册广播,销毁时启动广播
MainActivity里注册广播:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this, Main2Activity.class); startActivity(intent); //注册广播 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Define.PAHNAME); registerReceiver(new MyReceiver(),intentFilter); } class MyReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { unregisterReceiver(this); ((Activity)context).finish(); } } }
activity2:启动广播
public class Main2Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sdfa); Button bt= (Button) findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Define.PAHNAME); sendBroadcast(intent); finish(); } }); } }
相关文章推荐
- Android中退出多个Activity的两个经典方法
- Android 中退出多个Activity的两个经典方法
- Android退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android 中 退出多个activity的经典方法
- Android中退出多个Activity的两个方法
- Android结束Activity退出程序的一种有效方法
- Android结束Activity退出程序的一种有效方法
- Android经典完美退出方法
- android程序退出当前activity的方法
- android退出程序销毁多个Activity方法
- Android结束Activity退出程序的一种有效方法
- android-Activity路由机制及子页面退出软件方法
- Android退出一个多Activity应用程序的方法
- Android程序中有多个Activity时的可全部退出方法
- android 在一个Activity中结束另一个Activity的方法(可以完全退出程序)
- android81--两个Activity之间跳转时必然会执行的是哪几个方法