使Activity只存在一個例項(解決微信登入 原有登入介面無法關閉)
前言
最近專案整合微信登入中遇到一個問題:微信登入成功後,退出應用時,原有的普通登入頁面還存在。
第一反應就是在跳轉的時候怎麼將其finish(),後來結合實際情況,好像並不方便。
於是想到:在跳轉後續頁面的時候,從LoginActivity中轉一下,然後到達指定頁面,這樣就可以將LoginActivity關閉。
於是面臨一個新問題,如何讓LoginActivity只建立一次,於是我們想到了launchMode。
- 這裡我們使用singleInstance,在AndroidManifest.xml檔案中配置:
<activity
android:name=".LoginActivity"
android:launchMode="singleInstance" >
</activity>
- 我們還需要在LoginActivity重寫onNewIntent(Intent intent)方法:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// 跳轉首頁或者其他操作
...
}
至於我們為什麼不使用singleTask,因為在建立WXEntryActivity時建立了新的任務棧。singleTask在新的任務棧需要建立新的LoginActivity例項;而使用singleInstance,無論位於哪個Task中,系統都會把該LoginActivity所在的Task轉到前臺並顯示LoginActivity。
Android四種啟動模式
- standard:每次呼叫startActivity()啟動時都會建立一個新的Activity放在棧頂(預設模式)
- singleTop:啟動Activity時,指定Activity不在棧頂就建立,如在棧頂,則不再建立
注:不會出現兩個相同的Activity相鄰 - singleTask:如果啟動的Activity不存在就建立Activity,如果存在直接跳轉到指定的Activity所在位置
注:在其上面的Activity會被移出棧,也就是一個棧中不能有重複的Activity - singleInstance:如果啟動的Activity不存在就建立一個Activity同時建立一個棧,如果存在就將指定的Activity存在的棧移動到棧頂
注:表示這個Activity只能存在於一個獨立的任務棧中,同應用的其它Activity與其無關
相關文章
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- [API 寫法] QQ 登入、微信登入、Facebook、google、蘋果登入APIGo蘋果
- 微信登入
- 微信登入-6問題解決方案
- 微信小程式 unionid 登入解決方案微信小程式
- IOS微信版本過低無法登入 2024最新iOS
- 如何關閉win10登入介面_win10取消登入介面的方法Win10
- Ubuntu 16.04無法登入圖形介面Ubuntu
- WPF登入介面樣例
- 關於QQ郵箱登入提示一鍵登入解決方案
- 一個ssh無法遠端登入的問題跟蹤解決
- 解決mysql無法遠端登入的方法MySql
- Java微信授權登入小程式介面Java
- 如何關閉win10登入介面_win10不顯示登入介面的方法Win10
- 微信小程式登入方式的修改解決方案微信小程式
- 微信小程式登入微信小程式
- 微信授權登入
- 微信登入外掛
- 微信掃碼登入
- flutter 微信登入以及客服相關配置Flutter
- 微信登入+商品瀏覽
- java實現微信登入Java
- 為何無法登陸某一網頁怎麼辦_電腦瀏覽器無法登入某個網站解決方法網頁瀏覽器網站
- Postman無法登入賬號Postman
- 解決微信小程式登入與釋出的一些問題微信小程式
- mac google chrome無法登入的解決方法看這裡MacGoChrome
- Flutter關於一個登入頁Flutter
- 記錄一個 gitlab 登入問題解決Gitlab
- JWT實現登入認證例項JWT
- 微信小程式登入那些事微信小程式
- java 微信授權登入配置Java
- 阿里旺旺win10無法正常登入怎麼辦_win10中阿里旺旺無法正常登入的解決步驟阿里Win10
- steam登入無法連線到網路怎麼辦 steam賬號登入失敗怎麼解決
- Laravel5.6 實現第三方登入 微信登入Laravel
- oracle安裝後無法登入Oracle
- 解決ZBLOG PHP 程式無法登入後臺賬戶問題PHP
- 訂單交易平臺三(登入介面整個實現過程)階段一(只實現簡單的登入功能)
- sql 注入越過登入驗證例項SQL
- 第三方登陸:微信掃碼登入