在一个Activity中结束另一个Activity的方法;如何是从A跳转到B, 结束A的;关于Activity在后台被销毁的处理;关于Activity在后台被销毁的处理

类型一:在一个Activity中结束另一个Activity的方法


下面的以ActivityB 结束ActivityA 为例:
方法一:
1.首先在 ActivityA 中定义一个 Activity 的静态全局变量:
staticActivity ActivityA;  
 
2.在OnCreate()方法中给ActivityA赋值:
ActivityA=this;    


3.在ActivityB中,需要结束ActivityA时,调用
ActivityA.ActivityA.finish();    


方法二:
1.在ActivityA中加入一个广播接收器,当收到广播时退出,
2.在ActivityB中,需要结束ActivityA时发送广播即可。


类型二:如何是从A跳转到B, 结束A的话
Intent i=new Intent(A,B)satrtActivity();
类名.this.finish();


类型三:如何是从A跳转到B, 结束A,
方法一:
ActivityA.isFinishing()这个方法之外;
方法二:
可以设置一个Application List变量用来存放Activity,
每次Activity onCreate时add进List,
每次Activity onDestroy时remove,
到时只要判断List里面是否存在指定的Activity就行了
方法三:
activity 销毁之前会调用 onDestroy(),
你在这个函数里面写提示就知道它有没有被销毁。(发送广播,
或者存储一个SharePreference 一个标志值,或者一个全局静态变量什么的);

类型四:关于Activity在后台被销毁的处理


一:如果一个APP在被转到了后台,就很有可能被系统回收,  
当APP在后台被系统回收,再次打开APP的时候,会发生什么事情呢?(以下是个人测试得到) : 
1,一般所有能回收的Activity都会被回收, Application 也会销毁  
2,会在一个新的进程中新建一个应用, 意味所有旧的变量,常量都不存在了 ,是所有哦!!!   
3,重新加载APP最后显示的Activity  
4,这个时候点击返回键,会重新加载倒数第二个Activity, 以此类推...  
  
二:我遇到的问题是保存在 全局变量 和 静态变量 都没有数据了  
  
三:解决方法:
方法一:
我要实现的效果是如果APP被后台回收,就重新打开应用, 实现如下:  
  
1,定义一个基类BaseActivity   
2,除了程序入口的Activity 其他activity都继承BaseActivity  
3,在BaseActivity的onCreate方法中判断必要的变量是否销毁,如果销毁了就调用  
android.os.Process.killProcess(android.os.Process.myPid());  来结束整个应用  
方法二:
使用onSaveInstanceState()进行保存数据,同事移除Activity中的Fragment;

  
这样所有的activity都会被关闭,而程序入口的activity会重新加载,达到了重新加载的效果  
  
四:为什么 killProcess 不会结束程序入库的activity呢?    


1.系统其实只是记录了APP中activity打开的顺序,
2.当我们再次打开被系统回收的APP的时候,APP中其实只有一个activity,
当我没killProcess的时候,系统又会重新建一个线程去打开倒数第二个activity,依次类推  
3.当打开程序入口的activity时,由于我们没有去销毁它,所以activity被重新加载,相当于重新打开了应用  























你可能感兴趣的:(在一个Activity中结束另一个Activity的方法;如何是从A跳转到B, 结束A的;关于Activity在后台被销毁的处理;关于Activity在后台被销毁的处理)