您的位置:首页 > 其它

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

2016-11-30 11:31 471 查看
类型一:在一个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被重新加载,相当于重新打开了应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐