国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

子頁面Activity緩存及銷毀

2019-11-09 15:13:49
字體:
來源:轉載
供稿:網友

最近碰上個需求挺有意思的:

主菜單Activity是A,子頁面Activity是B,要求,A點擊進入B,B返回后不能結束,從A再次進入B要上次的狀態,從A點返回,整個APP退出。

1、首先對B的返回進行處理:

@Overridepublic void onBackPRessed() {    //  super.onBackPressed();    Qiuutil.LogE("onBackPressed");    Intent intent = new Intent(this, AActivity.class);    startActivity(intent);}

必須重寫此方法,并注釋Supper。否則默認調用會FINISH(),就無法緩存。

但是這里又是重新打開A,所以A必須是單例模式,

2、A單例模式

android:name=".activity.AActivity"android:launchMode="singleInstance"然后又再進入B

  Intent intent = new Intent(this, BActivity.class);    startActivity(intent);這時要求進入的是已經緩存的B,所以B也得使用單例模式,

3、B單例模式

android:name=".activity.BActivity"android:launchMode="singleTask"

這里并沒有使用“singleInstance”模式而使用“singleTask”。(華為手機測試)

到這里就完成了需求。

4、探討B單例模式

如果B使用“singleInstance”模式,那么在A使用返回退出時,B界面會一直存活,無法退出整個APP。具體原因不懂,請有了解的朋友留言。

如果是小米手機B必須使用“singleInstance”模式;

如果是華為手機B必須使用“singleTask”模式;

好蛋疼,求高手指點。

5、為了更加保險,在B中為B設置單例模式如下:

private static BActivity instance;public static 
BActivity getInstance() {    return instance;}
@Overrideprotected void onCreate(Bundle savedInstanceState) {
instance = this;}

然后在A中:

@Overridepublic void onBackPressed() { BActivity.getInstance().finish();
    super.onBackPressed();}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 策勒县| 天台县| 彩票| 扶风县| 忻城县| 云南省| 江北区| 华蓥市| 丽江市| 禹州市| 江门市| 莲花县| 鹤岗市| 邢台县| 鲜城| 冷水江市| 建宁县| 蓝田县| 舟山市| 阳城县| 固始县| 安新县| 夏邑县| 宁远县| 湘西| 兴和县| 黎城县| 祁门县| 泰兴市| 尚志市| 彭水| 定日县| 汕头市| 宝坻区| 资阳市| 偏关县| 蒙阴县| 应城市| 东兴市| 公安县| 睢宁县|