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

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

子頁面Activity緩存及銷毀

2019-11-09 16:29:14
字體:
來源:轉載
供稿:網友

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

主菜單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();}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁远县| 台安县| 樟树市| 东乡| 云和县| 安泽县| 额济纳旗| 达孜县| 喀喇沁旗| 安吉县| 梓潼县| 富顺县| 南投市| 大名县| 临潭县| 临清市| 缙云县| 白水县| 惠来县| 金华市| 庄河市| 岱山县| 上犹县| 利川市| 固安县| 时尚| 曲阳县| 宜兴市| 汪清县| 北安市| 宜兴市| 定兴县| 绥宁县| 武夷山市| 无为县| 西和县| 尉犁县| 博兴县| 德化县| 随州市| 鄯善县|