編輯:關於android開發
一、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()
方法,就有可能造成重復的初始化,降低程序效率是必然的了,而且更有可能因為重復的初始化而導
致數據的丟失。這是需要千萬避免的。
android:ImageView選擇本地圖片並顯示 運行結果: 模擬器圖庫就三張 沒辦法~畫質挺感人~ 一個隱式意圖 布局文件: <relativelay
Android 在內部存儲讀寫文件,android讀寫文件讀寫操作* Ram內存:運行內存,相當於電腦的內存* Rom內存:內部存儲空間,相當於電腦的硬盤* sd卡:外部
Android進程通信之兩種序列化方式分析 2月下旬辭職了,去海南度假到現在,領略了一把三亞風情也算任性和 然而這樣任性帶來的後果就是。。不行了我必須吐槽一句。。 沒
MSM8909+Android5.1.1之BSP開發---電池管理2---BatteryInfo.java MSM8909+Android5.1.1之BSP開發---電池