1. 程式人生 > >android的singleInstance啟動模式及方法呼叫

android的singleInstance啟動模式及方法呼叫

啟動模式;https://www.cnblogs.com/zhengtu2015/p/5053831.html

1 普及下知識

Activity啟動方式有四種,分別是:
standard
singleTop
singleTask
singleInstance

設定Activity的啟動模式,只需要在AndroidManifest.xml裡對應的標籤設定android:launchMode屬性

standard 預設模式,可以不用寫配置

其餘三種模式,可以網上搜索,一大堆介紹。

2 遇到的問題

專案中有個登入賬號的介面,登入完成後,需要finish掉該activity。問題是,該activity未設定啟動模式,在主介面打開了該介面,然後點選home鍵,之後再進入其他應用中開啟該activity,進行了登入操作後,登入成功後,關閉了當前輸入賬號的介面,但是卻又顯示了空白的登入介面。。。

對於這些操作,只能設定為singleInstance啟動模式,但是問題又來了:開啟該介面時Intent傳過來一些值,在登入完成關閉介面時,需要根據這些值來確定是否需要開啟另一個介面,使用了singleInstance模式,第二次開啟的該介面的值就獲取不到,getIntent().getExtras()始終是第一次的值。

3 解決方法

啟動模式為singleInstance,第二次開啟介面時,會走onNewIntent方法,程式碼如下

protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.d(TAG, “onNewIntent”);
setIntent(intent);
}

通過上面方法,可以更新Intent ,就可以拿到第二次開啟該介面傳過來的Intent內的值。