1. 程式人生 > >Android入門——四大元件之Activity啟動模式

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四大元件ActivityActivity生命週期

      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