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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石河子市| 布拖县| 城固县| 福建省| 西峡县| 新邵县| 孟津县| 太谷县| 鹤壁市| 神池县| 安阳县| 邯郸县| 桓台县| 闻喜县| 林州市| 类乌齐县| 聊城市| 桃园县| 肇源县| 柯坪县| 衢州市| 利津县| 新泰市| 定安县| 拉孜县| 噶尔县| 获嘉县| 古交市| 砚山县| 洪江市| 新泰市| 民乐县| 韶山市| 巴彦淖尔市| 卢氏县| 天祝| 子长县| 勐海县| 宝丰县| 宁城县| 东城区|