国产探花免费观看_亚洲丰满少妇自慰呻吟_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();}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂东县| 山阳县| 西林县| 云霄县| 阳泉市| 曲松县| 酉阳| 广宗县| 唐海县| 肥乡县| 定南县| 涟水县| 绥宁县| 宁陕县| 蓬溪县| 广西| 平潭县| 仁布县| 博爱县| 石家庄市| 青阳县| 上饶市| 辽源市| 龙里县| 齐齐哈尔市| 双江| 和平县| 茂名市| 兴安县| 崇州市| 启东市| 白朗县| 乌兰浩特市| 安吉县| 宁海县| 奉贤区| 桦川县| 吉林市| 嘉善县| 陆川县| 固始县|