亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

簡單介紹Android開發中的Activity控件的基本概念

2020-04-11 11:14:22
字體:
來源:轉載
供稿:網友

Activity是最基本的模塊,一般稱之為"活動",在應用程序中,一個Activity通常就是一個單獨的屏幕。簡單理解,Activity代表一個用戶所能看到的屏幕,主要用于處理應用程序的整體性工作,例如監聽系統事件,為用戶顯示指定的View,啟動其他Activity等。所有應用的Activity都繼承于android.app.Activity類,該類是Android提供的基層類,其他的Activity繼承該父類后,通過父類的方法來實現各種功能。

Activity 生命周期圖如下:

2015121152423025.png (538×668)

在android中,Activity擁有四種基本狀態:

1、Active/Runing一個新 Activity 啟動入棧后,它在屏幕最前端,處于棧的最頂端,此時它處于可見并可和用戶交互的激活狀態。

2、Paused 當 Activity 被另一個透明或者 Dialog 樣式的 Activity 覆蓋時的狀態。此時它依然與窗口管理器保持連接,系統繼續維護其內部狀態,所以它仍然可見,但它已經失去了焦點故不可與用戶交互。

3、Stoped 當 Activity 被另外一個 Activity 覆蓋、失去焦點并不可見時處于 Stoped狀態。

4、Killed Activity 被系統殺死回收或者沒有被啟動時處于 Killed狀態。

當一個 Activity 實例被創建、銷毀或者啟動另外一個 Activity 時,它在這四種狀態之間進行轉換,這種轉換的發生依賴于用戶程序的動作。

如上所示,Android 程序員可以決定一個 Activity 的"生",但不能決定它的"死",也就時說程序員可以啟動一個 Activity,但是卻不能手動的"結束"一個 Activity。當你調用 Activity.finish()方法時,結果和用戶按下 BACK 鍵一樣:告訴 Activity Manager 該 Activity 實例完成了相應的工作,可以被"回收"。隨后 Activity Manager 激活處于棧第二層的 Activity 并重新入棧,同時原 Activity 被壓入到棧的第二層,從 Active 狀態轉到 Paused 狀態。例如:從 Activity1 中啟動了 Activity2,則當前處于棧頂端的是 Activity2,第二層是 Activity1,當我們調用 Activity2.finish()方法時,Activity Manager 重新激活 Activity1 并入棧,Activity2 從 Active 狀態轉換 Stoped 狀態,Activity1. onActivityResult(int requestCode, int resultCode, Intent data)方法被執行,Activity2 返回的數據通過 data參數返回給 Activity1。

非用戶行為把activity不可見的時候,例如電話忽然來了==

/**  * 重新創建恢復緩存的數據  */  @Override  protected void onRestoreInstanceState(Bundle savedInstanceState) {    Log.i("onRestoreInstanceState",savedInstanceState.getString("name"));    super.onRestoreInstanceState(savedInstanceState);  }  /**  * 被摧毀前保存緩存的一些數據  */  @Override  protected void onSaveInstanceState(Bundle outState) {    outState.putString("name", "簡明現代魔法");    super.onSaveInstanceState(outState);  }

在android里,有4種activity的啟動模式,分別為:

  1.   ?standard: 標準模式,一調用startActivity()方法就會產生一個新的實例。
  2.   ?singleTop: 如果已經有一個實例位于Activity棧的頂部時,就不產生新的實例,而只是調用Activity中的newInstance()方法。如果不位于棧頂,會產生一個新的實例。
  3.   ?singleTask: 會在一個新的task中產生這個實例,以后每次調用都會使用這個,不會去產生新的實例了。
  4.   ?singleInstance: 這個跟singleTask基本上是一樣,只有一個區別:在這個模式下的Activity實例所處的task中,只能有這個activity實例,不能有其他的實例。

  這些啟動模式可以在功能清單文件AndroidManifest.xml中進行設置,中的launchMode屬性。

  相關的代碼中也有一些標志可以使用,比如我們想只啟用一個實例,則可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 標志,這個標志表示:如果這個activity已經啟動了,就不產生新的activity,而只是把這個activity實例加到棧頂來就可以了。

  Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);  intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);  startActivity(intent);  

  Activity的加載模式受啟動Activity的Intent對象中設置的Flag和manifest文件中Activity的元素的特性值交互控制。

  下面是影響加載模式的一些特性

  核心的Intent Flag有:

  •   FLAG_ACTIVITY_NEW_TASK
  •   FLAG_ACTIVITY_CLEAR_TOP
  •   FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
  •   FLAG_ACTIVITY_SINGLE_TOP

  核心的特性有:

  •   taskAffinity
  •   launchMode
  •   allowTaskReparenting
  •   clearTaskOnLaunch
  •   alwaysRetainTaskState
  •   finishOnTaskLaunch

  四種加載模式的區別

  所屬task的區別

  一般情況下,“standard”和”singleTop”的activity的目標task,和收到的Intent的發送者在同一個task內,就相當于誰調用它,它就跟誰在同一個Task中。

  除非Intent包括參數FLAG_ACTIVITY_NEW_TASK。如果提供了FLAG_ACTIVITY_NEW_TASK參數,會啟動到別的task里。

  “singleTask”和”singleInstance” 總是把要啟動的activity作為一個task的根元素,他們不會被啟動到一個其他task里。

  是否允許多個實例

  “standard”和”singleTop”可以被實例化多次,并且是可以存在于不同的task中;這種實例化時一個task可以包括一個activity的多個實例;

  “singleTask”和”singleInstance”則限制只生成一個實例,并且是task的根元素。

  singleTop 要求如果創建intent的時候棧頂已經有要創建的Activity的實例,則將intent發送給該實例,而不創建新的實例。

  是否允許其它activity存在于本task內

  “singleInstance”獨占一個task,其它activity不能存在那個task里;

  如果它啟動了一個新的activity,不管新的activity的launch mode 如何,新的activity都將會到別的task里運行(如同加了FLAG_ACTIVITY_NEW_TASK參數)。

  而另外三種模式,則可以和其它activity共存。

  是否每次都生成新實例

  “standard”對于每一個啟動Intent都會生成一個activity的新實例;

  “singleTop”的activity如果在task的棧頂的話,則不生成新的該activity的實例,直接使用棧頂的實例,否則,生成該activity的實例。

  比如:

  現在task棧元素為A-B-C-D(D在棧頂),這時候給D發一個啟動intent,如果D是 “standard”的,則生成D的一個新實例,棧變為A-B-C-D-D。

  如果D是singleTop的話,則不會生產D的新實例,棧狀態仍為A-B-C-D

  如果這時候給B發Intent的話,不管B的launchmode是”standard” 還是 “singleTop” ,都會生成B的新實例,棧狀態變為A-B-C-D-B。

  “singleInstance”是其所在棧的唯一activity,它會每次都被重用。

  “singleTask” 如果在棧頂,則接受intent,否則,該intent會被丟棄,但是該task仍會回到前臺。 當已經存在的activity實例處理新的intent時候,會調用onNewIntent()方法,如果收到intent生成一個activity實例,那么用戶可以通過back鍵回到上一個狀態;如果是已經存在的一個activity來處理這個intent的話,用戶不能通過按back鍵返回到這之前的狀態。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成**性毛茸茸| www.久久撸.com| 日韩中文字幕视频在线观看| 久久亚洲精品中文字幕冲田杏梨| 国产极品jizzhd欧美| 亚洲另类xxxx| 国产男女猛烈无遮挡91| 国产美女高潮久久白浆| 欧美xxxx做受欧美| 国产精品视频区1| 国产精品igao视频| 亚洲一区中文字幕在线观看| 色综合男人天堂| 亚洲午夜久久久影院| 91av在线网站| 欧美日韩国产一区中文午夜| 久久综合伊人77777蜜臀| 欧美高清视频免费观看| 欧美有码在线观看视频| 亚洲最新视频在线| 91丨九色丨国产在线| 国产不卡精品视男人的天堂| 日韩精品高清在线观看| 日韩经典中文字幕在线观看| 色综合天天综合网国产成人网| 国产精品久久久久久久久久免费| 最新69国产成人精品视频免费| 日韩在线观看免费高清完整版| 久久天天躁日日躁| 91亚洲国产成人久久精品网站| 国产精品夜间视频香蕉| 国产精品成人在线| 中文国产成人精品久久一| 欧美激情视频在线观看| 美乳少妇欧美精品| 亚洲日本中文字幕免费在线不卡| 欧美电影在线观看网站| 久久国产加勒比精品无码| 久久久电影免费观看完整版| 欧美丰满少妇xxxx| 国产精品视频区| 成人精品在线视频| 在线观看日韩专区| 成人激情电影一区二区| 中文日韩在线视频| 欧美精品一二区| 亚洲xxxxx电影| 亚洲最大中文字幕| 精品久久久久久国产91| 日韩电影第一页| 欧洲日本亚洲国产区| 日韩av免费在线| 在线免费看av不卡| 久久久久国产精品www| 亚洲一区二区三区久久| 精品欧美国产一区二区三区| 91av视频导航| 国产精品国产三级国产专播精品人| 日韩在线中文字幕| 亚洲一区二区久久久久久| 欧美精品videos另类日本| 欧美日韩一区二区免费在线观看| 精品久久久久人成| 最新国产成人av网站网址麻豆| 国产精品福利片| 性色av一区二区三区在线观看| 欧美成人免费在线观看| 日本精品视频在线观看| 好吊成人免视频| 亚洲国产成人精品一区二区| 亚洲性日韩精品一区二区| 国产精品成人aaaaa网站| 亚洲国产欧美一区二区三区久久| 亚洲成人三级在线| 亚洲国产欧美一区二区丝袜黑人| 欧美裸身视频免费观看| 日本免费久久高清视频| 欧美日韩国产综合视频在线观看中文| 国产精品27p| 国产情人节一区| 欧美久久精品午夜青青大伊人| 亚洲精品短视频| 久久人91精品久久久久久不卡| 免费99精品国产自在在线| 中文字幕无线精品亚洲乱码一区| 国内精品久久久久久影视8| 欧美激情2020午夜免费观看| 夜夜嗨av色一区二区不卡| 亚洲网站在线观看| 成人免费观看49www在线观看| 亚洲第一精品自拍| 精品久久久久久电影| 在线免费看av不卡| 91亚洲国产成人久久精品网站| 久久久久久久一区二区| 欧美成人免费网| 成人黄色片网站| 国产免费一区二区三区在线能观看| 国产精品高精视频免费| 97国产精品免费视频| 日韩电影中文 亚洲精品乱码| 欧洲成人性视频| 91av视频导航| 色老头一区二区三区在线观看| 日韩中文视频免费在线观看| 日本老师69xxx| 成人写真视频福利网| 欧美精品激情在线| 久久久精品国产网站| 欧美日韩免费看| 97香蕉久久超级碰碰高清版| 草民午夜欧美限制a级福利片| 日韩激情av在线免费观看| 激情av一区二区| 欧美成人免费全部观看天天性色| 久久国产精品首页| 91久久久亚洲精品| 中文字幕九色91在线| 91精品视频免费观看| 中文字幕欧美日韩在线| 国外日韩电影在线观看| 亚洲免费视频在线观看| 国产婷婷成人久久av免费高清| 久久久国产一区| 在线日韩日本国产亚洲| 日韩av影院在线观看| 国内外成人免费激情在线视频网站| 精品久久久久久中文字幕大豆网| 欧美美女18p| 国产91精品青草社区| 性色av一区二区三区| 在线观看国产精品91| 午夜精品一区二区三区av| 亚洲黄色片网站| 日韩中文字幕精品| 亚洲午夜久久久久久久| 国产精品扒开腿做爽爽爽的视频| 国产精品中文在线| 91精品91久久久久久| 永久555www成人免费| 国产日韩欧美综合| 91亚洲精品视频| 国产激情久久久久| 日韩精品在线免费观看视频| 久久人人爽人人爽人人片av高清| 国产精品福利网| 精品二区三区线观看| 欧美黑人xxx| 亚洲第一区中文99精品| 米奇精品一区二区三区在线观看| 中日韩美女免费视频网站在线观看| 国产一区二区三区日韩欧美| 在线播放精品一区二区三区| 91成人在线观看国产| 日本亚洲欧洲色| 亚洲视频在线视频| 欧美亚洲日本网站| 91精品久久久久久久久久另类| 伊人一区二区三区久久精品| 综合网日日天干夜夜久久| 亚洲欧美精品在线| 久久久精品国产亚洲| 亚洲精品动漫100p| 国产亚洲精品va在线观看|