四大組件之Activity詳解,四大activity詳解

來源:互聯網
上載者:User

四大組件之Activity詳解,四大activity詳解

一、Activity的概要說明

     我看過Activity的源碼,Activity類注釋大概是這樣解釋的:幾乎所有的Activity都是與使用者互動用的,我想用了一個幾乎的意思應該是排除一些純展示介面吧,因此Activity類主要是建立一個視窗來展示我們所做的UI介面,我們用的時候通常是全屏來展示UI介面的,但是Activity也有一些其他的用途,比如當做一個懸浮的視窗來用(在資訊清單檔裡更改Activity的主)。

二、Activity的四種LaunchMode

     設定:<activity android:name=".MainActivity" android:launchMode="standard" />

     1、Standard:把Activity設定成Standard啟動模式的意思是:比如當前顯示的介面是FirstActivity,此時任務棧裡就會有一個FirstActivity執行個體,接下來由FirstActivity跳轉到FirstActivity,此時任務棧裡就會產生一個新的FirstActivity執行個體,如果再次跳轉到FirstActivity,任務棧裡又會多出第二個FirstActivity執行個體,到現在為止任務棧裡一共有三個FirstActivity執行個體,這時候我們連著按兩次Back鍵,才會返回到第一個FirstActivity,如所示:

     

     2、SingleTop:比如當前介面顯示的介面是FirstActivity,此時任務棧裡就會有一個FirstActivity執行個體,接下來由FirstActivity跳轉到FirstActivity,這個時候系統發現在棧頂處已經存在一個FirstActivity執行個體了,所以就不會再建立FirstActivity執行個體了(如第一個圖),否則就會在棧頂建立它的執行個體(如第二個圖),從SecondActivity跳轉到FirstActivity的時候,發現雖然任務棧裡存在FirstActivity執行個體,但是位置不在棧頂,所有就建立了一個FirstActivity執行個體。

        

     3、SingTask:比如我們當前顯示的介面是FirstActivity,此時任務棧裡就會有一個FirstActivivity執行個體,接下來由FirstActivity跳轉到SecondActivity,系統發現任務棧裡還沒有SecondActivity執行個體,於是就會建立一個SecongActivity執行個體放於棧頂(如的上半部分),接下來我們由SecondActivity跳轉到FirstActivivity,系統會發現在棧裡已經存在FirstActivivity執行個體了(不管位置在哪),所以就不會在棧裡建立FirstActivity執行個體的,同時還會把FirstActivity執行個體上面的對象全不都彈出棧(如的下半部分)。

    intent)          Activity的啟動模式為singleTop/singleTask會執行onNewIntent方法,比如從OneActivity(SingTask模式)跳轉到TwoActivity,再從TwoActivity回來,OneActivity的生命週期就會變成onNewIntent()---->onResart()------>onStart()----->onResume(),也就是說只要OneActivity在任務棧裡,並且又不是第一次進入到OneActivity,就會執行onNewIntent()方法。那麼   (二)onSaveInstanceState(Bundle outState)          在網上查過很多人資料,說這個方法只有在系統記憶體不夠時,Activity被強制殺死的時候才會被執行,但是這種說法是錯誤,我試了幾種情況,也會執行       onSaveInstanceState方法。          1、Activity正常的跳轉                    2、按Home鍵退到背景時候                   3、橫豎屏切換的時候,比如我們在看電影的時候,橫豎屏切換的時候,必須儲存切換之前看的進度。                   3、onConfigurationChanged(Configuration newConfig)            android:onConfigurationChanged實際對應的是Activity裡的onConfigurationChanged()方法。     在AndroidManifest.xml中添加上訴代碼的含義是表示在改變螢幕方向、彈出軟體盤和隱藏軟鍵盤時,不再去執行onCreate()方法,
     而是直接執行onConfigurationChanged()。如果不申明此段代碼,按照Activity的生命週期,都會去執行一次onCreate()方法,而onCreate()方法通常會在顯示之前做        一些初始化工作。所以如果改變螢幕方向這樣的操作都去執行onCreate()方法,就有可能造成重複的初始化,降低程式效率是必然的了,而且更有可能因為重複的初始化而導    致資料的丟失。這是需要千萬避免的。                                                                                

        

    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.