Android入門——四大元件之Activity啟動模式
- standrad
- singleTop
- singleTask
- singleInstance
在AndroidManifest.xml中通過中設定
<activity android:name=".MainActivity"
android:launchMode="singleInstance"></activity>
standrad
standrad是預設的啟動模式,每次啟動一個Activity都會建立一個新的例項加入到棧中,並處於棧頂的位置,所以在退出的時候,你啟動了幾次,就需要按幾次back鍵退出程式。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate()"+this.toString()); }
通過intent啟動當前activity
mStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, MainActivity.class));
}
});
通過log資訊可以看出每次啟動this.toString()的值都不一樣
I/MainActivity: onCreate()[email protected]
I/MainActivity: onCreate()[email protected]
I/MainActivity: onCreate()[email protected]
singleTop
如果新啟動的activity已經位於棧頂,就不會建立新的例項,並且會回撥onNewIntent方法。反之如果新啟動的activity不是位於棧頂的,就會重新建立新的例項,並新增到棧頂
//首次啟動activity I/SecondActivity: onCreate()[email protected] //之後多次啟動activity都不會再建立新的例項,因為當前activity已經位於棧頂
看下面的log資訊,很明顯建立了兩個MainActivity的例項,因為啟動了SecondActivity,MainActivity不再位於棧頂位置,所以在SendActivity中啟動MainActivity會重新建立一個新的例項
I/MainActivity: onCreate()[email protected]
I/SecondActivity: onCreate()[email protected]
I/MainActivity: onCreate()[email protected]
singleTask
每次啟動activity時都會在棧中檢查是否存在該activity的例項,如果存在直接使用該例項,並把這個activity之上的其他activity都移出棧,並且會回撥onNewIntent方法。如果沒有發現該activity的例項,那就建立一個例項
MainActivity 為singleTask模式
I/MainActivity: onCreate()[email protected]
I/MainActivity: onStart()
I/MainActivity: onResume()
I/MainActivity: onPause()
//跳轉到SecondActivity
I/SecondActivity: onCreate()[email protected]
I/SecondActivity: onStart()
I/SecondActivity: onResume()
I/MainActivity: onSaveInstanceState()
I/MainActivity: onStop()
//從SecondActivity啟動MainActivity,發現MainActivity並沒有重新建立新的例項
I/SecondActivity: onPause()
I/MainActivity: onNewIntent()
I/MainActivity: onRestart()
I/MainActivity: onStart()
I/MainActivity: onResume()
I/SecondActivity: onStop()
I/SecondActivity: onDestroy()
singleInstance
singleInstance會啟動一個新的棧來管理activity。設定為singleInstance啟動模式的activity,啟動後,系統會為其單獨建立一個棧,這個activity獨自位於這個棧中,之後不會重複建立它的例項
I/MainActivity: onCreate() task id=585
I/SecondActivity: onCreate() task id=586
I/ThirdActivity: onCreate() task id=585
從log資訊可以看出,MainActivity和ThirdActivity都在一個棧中,因為SecondActivity設定為singleInstance模式,所以單獨在一個棧中。當我們按下back鍵返回的時候,ThirdActivity直接返回了MainActivity,再按下back鍵返回到了SecondActivity,再按back鍵退出程式。原因是MainActivity和ThirdActivity都在一個棧中,ThirdActiity出棧後,MainActivity就位於棧頂顯示在介面。然後MainActivity出棧後,這個棧已經空了,於是就顯示了另一個棧中的SecondActivity
歡迎糾錯
相關推薦
Android入門——四大元件之Activity啟動模式
standrad singleTop singleTask singleInstance 在AndroidManifest.xml中通過中設定 <activity android:name=".MainActivity" android:l
Android四大元件之Activity-啟動模式
1.Activity的啟動模式 當我們多次呼叫同一個Activity時,系統會重複建立多個例項並把它們一一放入任務棧中,這種方式顯然不符合我們的設計要求。所以Android在設計時就提供了四種啟動模式來解決此問題。 四種啟動模式分別如下: standard-標
Android基礎——四大元件之Activity
1.Activity >概念:活動面板 應用程式元件 可以繪製Ui介面 可以和使用者進行互動 預設展示全屏 其他情況 介面比其他視窗小 懸浮在其他視窗上方 >建立一個Activity >1,建立
Android--四大元件之Activity(一)
####1. Activity是什麼? ####2. 生命週期 ######1). Activity跳轉 ######2). 從後臺啟動 ######3). 橫豎屏切換 ####3. 啟動模式 ######1). 任務棧 ######2). laucherMode ######3).
Android 基礎知識——四大元件之Activity(二)
今天我們來探討一下activity有什麼啟動模式,都有什麼特點呢,且看下面分析 1.Task以及back stack >Task(任務) 為了完成一個功能 多個Activity的集合, 當你的應用程式啟動時 系統會自動建立Task用於管理Activ
Android四大元件之Activity-生命週期
一. Android 四大元件包括 Activity 活動 Service 服務 Broadcast Receiver 廣播接收者 Content Provider 內容提供者 1.什麼是Activity? 使用者可與其提供的螢幕進行互動,以執行撥打電話、拍
Android 四大元件之Activity的IntentFilter匹配規則小述
一、概述 本節主要介紹Activity的IntentFilter匹配規則,其是我們在隱式啟動一個Activity的過程中所用到的知識點,在這裡我就大概的介紹下,隱式啟動一個Activity需要我們的Intent能夠匹配待啟動Activity的IntentFilt
Android 四大元件之Activity
Activity 是安卓四大元件之一,也是最常用最重要的元件。 四大元件:Activity、Service、Content provider、Broadcast Receiver。 通常一個Activity表示的就是一屏(也就是App的某個介面)。Activit
Android四大元件之Activity
Android有四大基本元件,他們分別是: Activity Service(服務) BroadcastReceive(廣播) Content Provider(內容提供者) 這四大元件在Android開發中必不可缺,今天我們來介紹一下Activity Activi
Android 四大元件之 Activity生命週期
一、 Activity 的生命週期概念 Activity 的生命週期指的是, Activity 物件從被建立到銷燬的全過程 二、 Activity 的狀態 執行狀態( Running): 該狀態表示 Activity 可見並且擁有使用者焦點; 暫停狀
Android 四大元件之 Activity-帶值跳轉
從一個Activity跳轉到另外一個Activity,並且可以帶值跳轉,但我們日常生活中使用App時會經常遇到這種狀況,假設有某個介面A,點選上面不同的按鈕會啟動不同的介面B、C、D。。。,這些介面會處理某個業務並將處理結果返回給介面A,可以採用帶返回值得跳轉來
Android四大元件之Activity詳解
一、Activity的生命週期: import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { /*建立Activity時被
Android 四大元件之---Activity 詳解
Android Activity生命週期詳解 1. 什麼是Activity? Activity作為Android四大元件之一,它有著舉足輕重的地位,每一個Activity都會獲得一個用於繪製其使用者介面的視窗,Activity是一個v
Android面試(2):四大元件之Activity---生命週期
全文來自剛哥的《Android藝術探究》 我們這裡分成兩種情況詳細介紹: 一、正常情況下的生命週期: 所謂正常情況下的生命週期,是指在有使用者參與的情況下,Activity所經過的生命週期的改變。 二、異常情況下的生
深入剖析Android四大元件(七)——Activity啟動的4個階段
在Activity的啟動流程中,共有4個階段,下面將一一道來。 1.第一階段——啟動資訊翻譯以及服務呼叫 這一階段的工作主要是在應用程式本地完成的,主要為啟動Activity做一些引數上的準備,然後服務的代理將這些引數轉發到服務,開始Activity啟動的流程,如下圖:
Android四大元件之Activity,Activity生命週期
Android四大基本元件分別是Activity,Service服務,Content Provider內容提供者,BroadcastReceiver廣播接收器。 Activity作為四大元件之一,其生命週期也就是它所在的程序的生命週期。Activity生
Android開發筆記: android四大元件之Activity
一,什麼是Activity? 活動Activity:一個單獨的螢幕 一個顯示的視窗 一個介面定義:用來顯示android應用的介面的一個元件!!!什麼是android元件:android應用:主要由4大元件構成元件:建立 銷燬 :一個元件從建立到銷燬的過程:生命週期不同的元
Android四大元件之 Activity(上)
(一)概述 本節開始講解Android的四大元件之一的Activity(活動); 官方文件: Activity是一個應用程式的元件,他在螢幕上提供了一個區域,允許使用者在上面做一些互動性的操作, 比如打電話,照相,傳送郵件,或者顯示一個地圖!Activit
Android 四大元件之 Activity(2)--傳值
Activity 之間的資料傳輸 1. Intent 直接傳值 第一個頁面傳值的方法 Intent intent = new Intent(); intent.putExtra("one", num1); intent.putEx
Android四大元件之Activity(七大生命週期)
一,一個Activity單獨執行時 在程式首次啟動時:onCreate------->onStart--------->onResume 如果Activity被finish了:onpause----->onStop------->on