江帆
摘 要:在Android系統(tǒng)中,Activity(即活動)是應用程序的重要組成單元之一。Activity與Service,BroadcastReceiver和ContentProvider并稱為Android系統(tǒng)的四大組件。在實際的Android應用程序中,一個Android軟件往往包含多個Activity,每個Activity呈現(xiàn)不同的操作界面,因此,掌握Android系統(tǒng)中各界面之間的活動模式是非常必要的。該文詳細闡述了Android系統(tǒng)中Activity的四種加載模式。
關鍵詞:Activity 加載 模式 棧
中圖分類號:TP391.9 文獻標識碼:A 文章編號:1672-3791(2017)03(b)-0031-02
在編寫Android應用程序的過程中,配置Activity時需要指定lauchMode屬性,這個屬性就是用于配置該Activity的加載模式。該屬性支持4個屬性值[1],標準模式、棧頂單例模式、任務內部單例模式和單實例加載模式。
在Android系統(tǒng)中,使用任務棧來管理多個Activity,當系統(tǒng)啟動一個新的應用程序時,Android系統(tǒng)就會為之創(chuàng)建一個任務棧[2],先啟動的Activity放在棧的底部,后啟動的Activity放在棧的頂部,然后加載這個應用的入口Activity,這個入口Activity就是我們首先看到的應用程序界面。因此,Activity不同的加載模式,就負責控制Activity與任務棧之間的加載關系,并管理實例化、加載Activity的方式。下面,詳細介紹這4種加載模式。
1 Activity的四種加載模式
1.1 standard模式
standard模式是Android系統(tǒng)內置的標準模式,當Android系統(tǒng)使用這種模式啟動目標Activity時,會為此Activity創(chuàng)建一個新的實例,并將此Activity添加到當前的任務棧中。使用standard模式加載Activity不會創(chuàng)建新的任務棧[3],新創(chuàng)建的Activity將被添加到棧頂位置。
1.2 singleTop模式
singleTop模式是棧頂單例模式,此模式與standard模式基本相似,但是有一點不同:當要啟動的目標Activity已經位于任務棧的頂部時,系統(tǒng)不同重新創(chuàng)建新的目標Activity實例,而是重復使用已經存在的Activity實例,這就意味著,如果在編寫程序的過程中,將Activity的加載模式改為singleTop,無論用戶單擊多少次創(chuàng)建按鈕,程序界面都不會發(fā)生變化。
1.3 singleTask模式
singleTask模式是任務內部單例模式,采用這種加載模式的Activity在同一個任務棧內部只有一個實例。
1.4 singleInstance模式
singleInstance模式是單實例加載模式,在這種加載模式下,Android系統(tǒng)無論從哪個任務棧中啟動目標Activity,只會創(chuàng)建一個目標Activity實例,并會使用一個全新的任務棧來加載此Activity實例。
2 編寫Android程序實現(xiàn)四種加載模式
2.1 standard模式程序代碼
public class MainActivity extends Activity
{ intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent); }
2.2 singleTop模式程序代碼
⑴配置Activity,設置為singleTop模式。
在AndroidManifest.xml文件中,修改launchMode屬性為singleTop,代碼如下:
android:launchMode=”singleTop” /> ⑵編寫java代碼。 public class MainActivity extends Activity { Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent); } 2.3 singleTask模式程序代碼 ⑴配置Activity,設置為singleTask模式。 在AndroidManifest.xml文件中,修改launchMode屬性為singleTask,代碼如下: android:launchMode=”singleTask” /> ⑵編寫java代碼。 public class SingleTaskActivity extends Activity { Intent intent = new Intent(SingleTaskActivity.this, SecondActivity.class); startActivity(intent); } 2.4 singleInstance模式程序代碼 ⑴配置Activity,設置為singleInstance模式。 在AndroidManifest.xml文件中,修改launchMode屬性為singleInstance,代碼如下:
android:launchMode=”singleInstance” /> ⑵編寫java代碼。 public class SingleInstanceActivity extends Activity { Intent intent = new Intent(SingleInstanceActivity.this, SecondActivity.class); startActivity(intent); } 3 結語 在Android系統(tǒng)中,Activity的四種加載模式各有其特點。standard模式無須指定其啟動方式。singleTop為單實例模式,使用時須配置其Activity的launchMode屬性為singleTop。singleTask為系統(tǒng)內部單實例模式,使用時須配置其Activity的launchMode屬性為singleTask。singleInstance為單實例加載模式,使用時須配置其Activity的launchMode屬性為singleInstance。Activity的四種加載模式,分別適用于不同的程序編寫環(huán)境。在編寫Android應用程序時,要仔細分析其特點,有針對性地采用不同的加載模式,才能發(fā)揮最好的效果。 參考文獻 [1] 蔡敏.Android平臺上的藍牙遠程控制研究[J].工程技術:文摘版,2015,9(3):80-81. [2] 方育紅.基于購物商城應用的Android框架[J].移動信息,2015,9(1):34. [3] 王曉禹,石麗.基于JSON實現(xiàn)Android智能終端與Web服務器“面向對象”的信息交換[J].數(shù)字技術與應用,2012(4):224-225. [4] 郭文麗,嚴潮斌,吳旭.基于Android客戶端的圖書館微服務研究與實踐[J].圖書情報工作,2013(8):22-26. [5] 馬建紅,姬莉霞,衛(wèi)權崗.基于Android平臺的移動個人助手設計與實現(xiàn)[J].現(xiàn)代電子技術,2012(2):24-26.