1. 程式人生 > >Activity的啟動模式之Standard

Activity的啟動模式之Standard

  standard是活動預設的啟動模式,在不進行啟動模式的設定的情況下,所有活動都會自動使用這種啟動模式。在該模式下,每當啟動一個Activity就會在返回棧中入棧,將前面啟動的Activity壓入到棧內,本身處於棧頂的位置。對於使用standard模式的活動,android系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的一個新的例項。

  弄段程式碼對該模式進行深入的體會,我們在佈局中加入一個按鈕Button,通過該按鈕來啟動同一個活動,然後觀察進棧退棧的情況。建立一個專案LearnLaunchMode;在activity_main.xml檔案中輸入如下程式碼新增一個Button:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     tools:context="com.rocking.learnlaunchmode.MainActivity"
> 7 <Button 8 android:id="@+id/launch" 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:text="再次啟動一個MainActivity" /> 12 </LinearLayout>

  然後在MainActivity.java檔案中執行啟動Activity的操作,程式碼如下:

 1 public class MainActivity extends
ActionBarActivity { 2 private Button launch; //宣告一個Button元件 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 requestWindowFeature(Window.FEATURE_NO_TITLE); //隱藏標題欄;必須放在setContent()前面 7 setContentView(R.layout.activity_main); 8 Log.i("tag", this + " is launch"); 9 launch = (Button) findViewById(R.id.launch); //獲取佈局檔案中的Button元件 10 //以匿名類的形式新增Button的事件監聽器 11 launch.setOnClickListener(new View.OnClickListener() { 12 @Override 13 public void onClick(View v) { 14 Intent intent = new Intent(); //建立一個意圖 15 //"顯示"意圖,第一個引數是一個Context,即當前的Activity,第二個引數是我們要開啟的Activity 16 intent.setClass(MainActivity.this, MainActivity.class); 17 startActivity(intent); //啟動該意圖 18 } 19 }); 20 21 } 22 }

  執行該程式,此時已經有一個MainActivity,然後再點選兩次Button,繼續建立兩個MainActivity的例項,在LogCat中可以看到列印資訊如下,也就是說有三個MainActivity進入了返回棧。

  此時如果我們需要退出程式,則需要點選三次back鍵,將這些活動出棧。因此,可以畫出Standard模式的原理示意圖如下:

  另外需要注意的地方是,如果是想在當前的 Activity_A 啟動自身 Activity_A,那麼啟動模式只能是 Standard 的,設定為接下來要講到的 SingleTop 和 SingleTask 是跳轉不了的,那麼又不想在任務棧中堆放這麼多的同一個 Activity,那麼就在 startActivity(intent) 之後加上一個 finish() 方法來結束自己的生命了。

相關推薦

Activity啟動模式Standard

  standard是活動預設的啟動模式,在不進行啟動模式的設定的情況下,所有活動都會自動使用這種啟動模式。在該模式下,每當啟動一個Activity就會在返回棧中入棧,將前面啟動的Activity壓入到

activity啟動模式singleTop

att pear protect logs 實例 點擊 launch 操作 @override activity啟動模式之singleTop 一、簡介 二、設置方法 在AndroidManifest.xml中將要設置為singleTop啟動模式的頁面進行配置 <

Activity啟動模式SingleInstance

啟動模式系列之:Activity啟動模式(Standrd和SingleTop) 啟動模式系列之:Activity啟動模式(SingleTask) 啟動模式系列之:Activity啟動模式(SingleInstance) 一,SingleInstance模式(單例項模式)

Android四大元件Activity-啟動模式

1.Activity的啟動模式 當我們多次呼叫同一個Activity時,系統會重複建立多個例項並把它們一一放入任務棧中,這種方式顯然不符合我們的設計要求。所以Android在設計時就提供了四種啟動模式來解決此問題。 四種啟動模式分別如下: standard-標

Activity啟動模式圖文詳解:standard, singleTop, singleTask 以及 singleInstance

英文原文:Understand Android Activity's launchMode: standard, singleTop, singleTask and singleInstance  另外關於啟動模式還有篇很好的文章:Android中Activity四種啟動模式和taskAf

啟動模式 (一)Standard模式

Activity四種啟動模式 standard: 標準模式.這是預設載入的模式 singleTop: 這種模式基本和standard模式基本相同.但是有一點不同:當將要被啟動Activity已經位於

Android入門——四大元件Activity啟動模式

standrad singleTop singleTask singleInstance 在AndroidManifest.xml中通過中設定 <activity android:name=".MainActivity" android:l

Activity啟動模式的深入分析

啟用 ide net 啟動模式 soft adding class 任務 新的 網上關於Activity啟動模式的文章許多。可是看起來都千篇一律,看完之後我們都能理解這4種啟動模式。只是官方api對singleTask這個啟動模式解釋有些爭議,導致我事實

Android Activity 啟動模式

.aspx art www 設置 instance ini cnblogs 順序 http Android啟動模式也就是Activity任務棧的運行模式:任務棧是用來存儲Activity的 在AndroidManifest.xml中的標簽

Android啟動模式singleinstance的坑

home鍵 不同 分別是 錯誤 重新 實例 得出 ins tar 前言 在實際應用中,使用singleinstance啟動模式時,會遇到一些奇奇怪怪的問題。Android有四種啟動模式,分別是standard,singleTop,singleTask,singleInsta

關於Activity啟動模式の學習

開始去學習Android的一些基礎的知識,開始從新做人,一步步腳踏實地的去了解這個系統 今天看的是關於Activity的啟動模式的文章,記下來防止自己遺忘了: Activity的啟動模式一共有四種,分別為standard,singleTop(棧頂模式),singleTask(複用模式),si

探索Activity啟動模式

LifecycleActivity記為A,LifecycleActivity2記為B 一, Standard 略. 二, SingleTop 開啟App,啟動第一個Activity(A1),看到taskId == 2215 D/PRETTY_LOGGER: │ taskCou

Android-Activity啟動模式(launchMode)

Activity啟動模式是非常重要的一塊內容,啟動模式直接關係到使用者的體驗 和 效能的提升等   Activity啟動模式分為四種:      如果不配置:launchMode,預設就是:standard 標準的   standard 標準的   singleTop 獨佔頂端   s

Android-Activity啟動模式-應用場景

在上一篇部落格中,Android-Activity啟動模式(launchMode),就介紹了Activity四種啟動模式的特點與使用等,但是到底什麼樣子的場景,去使用什麼樣子的啟動模式呢     Activity啟動模式分為四種:      如果不配置:launchMode,預設

android Activity 啟動模式 應用場景

棧的原理:先進後出,後進先出。所有操作都發生在棧頂。 首先介紹一下任務棧: (1)程式開啟時就建立了一個任務棧, 用於儲存當前程式的activity,所有的activity屬於一個任務棧。  (2)一個任務棧包含了一個activity的集合, 去有序的選擇哪一個activ

Activity啟動模式

一,啟動模式分類: Standard(標準模式,預設) SingleTop(棧頂複用模式) SingleTask(棧內複用模式) SingleInstance(單例項模式) 通過AndroidManifest可配置Activity的LaunchMode.如果

Android-intent.addFlags-Activity啟動模式

之前寫的Android-Activity啟動模式(launchMode),Android-Activity啟動模式-應用場景,講解的都是在AndroidManifest.xml配置launchMode="四種啟動模式" Activity啟動模式分為四種:      如果不配置:launchMode,預設

Android Activity啟動模式設定為SingleTask需要注意的地方

Android Activity啟動模式設定為SingleTask需要注意的地方 當Activity跳轉到啟動模式為SingleTask的Activity的時候,onRestart()不再回調,而是回撥 onNewInstance(Intent intent) 方法,其中引數可

Android Activity啟動模式的設定

    Android為了使我們能夠打破預設的堆疊的先後出的模式,提供了兩個種方式:一種是在AndroidManifest.xml定義Activity時指定它的載入模式,另一種是在用Intent開啟一個Activity時,在Intent中加入標誌。如果兩種方式都用了,則後

圖解Activity啟動模式-參考官方文件

launchMode: 1.standard 如果啟動該Activity的context是Activity,則新建一個Activity例項,該target Activity在source Activity的Task中。如果啟動改Activity的context不是Activity,則新建一個