Android基礎第八天易忘部分(Activity)
1.在Activity標籤中新增android:theme="@android:style/Theme.Dialog"會讓這個Activity以Dialog形式來顯示
2.在Activity標籤中新增android:theme="@android:style/Theme.Translucent"會讓這個Activity以透明的形式來顯示,上一個Activity會執行生命週期裡的onPause方法。
3.在清單檔案中Activity裡配置android:screenOrientation="landscape"表示橫屏顯示
4.避免橫豎屏切換導致Activity的生命週期方法執行需要在Activity標籤裡新增
android:configChanges="orientation|keyboardHidden|screenSize"
screenSize在2.3這種低版本的時候可以不加,但是4.0以上就必須要加,否則橫豎屏切換還會導致生命週期的方法執行
5.任務棧是記錄使用者開啟的Activity的。
6.一個應用程式被開啟後系統就會分配一個任務棧,當所有的Activity都退出的時候,任務棧就清空了。
7.任務棧的id是一個Integer的資料型別,並且是自增的。例如我開啟相機應用,相機應用的任務棧id是1,這時再開啟簡訊應用,簡訊應用的任務棧id就是2。
任務棧ID用getTaskId()獲得。
8.在Android作業系統裡面會存在多個任務棧,一個應用程式一個任務棧。
9.Activity的啟動模式
1. standard 預設標準的啟動模式, 每次startActivity都是建立一個新的activity的例項。
適用於絕大大數情況
2. singleTop 單一頂部,如果要開啟的activity在任務棧的頂部已經存在,就不會建立新的例項,
而是呼叫 onNewIntent() 方法。
應用場景: 瀏覽器書籤。 避免棧頂的activity被重複的建立,解決使用者體驗問題。
3. singletask 單一任務棧 , activity只會在任務棧裡面存在一個例項。如果要啟用的activity,在
任務棧裡面已經存在,就不會建立新的activity,而是複用這個已經存在的activity,
呼叫 onNewIntent() 方法,並且清空當前activity任務棧上面所有的activity
應用場景:瀏覽器activity, 整個任務棧只有一個例項,節約記憶體和cpu的目的
注意: activity還是執行在當前應用程式的任務棧裡面的。不會建立新的任務棧。
4. singleInstance 單態 單例模式
單一例項,整個手機作業系統裡面只有一個例項存在。不同的應用去開啟這個activity
共享 公用的同一個activity。
他會執行在自己單獨,獨立的任務棧裡面,並且任務棧裡面只有他一個例項存在。
應用場景:呼叫來電介面 InCallScreen
10.Activity的返回方法覆寫
/**
* 按返回鍵執行該方法
* 如果不希望後退鍵生效,就把super.onBackPressed();去掉
*/
@Override
public void onBackPressed() {
super.onBackPressed();
}
11.BroadcastReceiver:
(1)如果多個廣播接收者的優先順序是一樣的,那麼在清單檔案中先註冊的先執行,不同應用程式的先安裝的先執行
(2)sendBroadcast是發無需廣播,不可攔截
(3)sendOrderedBroadcast是發有序廣播,可攔截,sendOrderedBroadcast的引數三可指定最終的廣播接收者
(4)getResultData和setResultData 獲取和設定廣播資料對無序廣播是無效的,如果需要傳遞資料,只能使用intent的putExtra等api進行資料儲存
12.Service:長期後臺執行的沒有介面的元件
new Thread(){}.start(); 子執行緒沒有介面,也是長期後臺執行的。但是他很有可能因為手機記憶體不足而終止執行。
android系統程式管理是按照一定的規則的:
1.應用程式一旦被開啟 通常情況下關閉(只是清空任務棧)後程式不會停止。方便下一次快速啟動。這樣會帶來記憶體不足的問題。
2.Android系統有一套 記憶體清理機制。 按照優先順序去回收系統的記憶體。
程式分為5個等級的優先順序:(從高到低)
1.Foreground process 前臺程式 使用者正在玩的應用程式對應的程式
2.Visible process 可視程式 使用者仍然可以看到這個程式的介面。
3.Service process 服務程式 應用程式有一個服務元件在後臺執行。
4.Background process 後臺程式 應用程式沒有服務在執行 並且最小化 (activity onstop)
5.Empty process 空程式 沒有任何執行的activity, 任務棧空了
長期後臺執行的元件, 不要在activity開啟子執行緒。
應該是建立服務,在服務裡面開啟子執行緒。
服務的目的:
1.長期後臺執行。
2.提高程式的優先順序,系統不容易回收掉程式,即便回收了,記憶體充足的時候,把程式重新建立。
相關文章
- Android基礎第四天易忘部分Android
- Android基礎第一天易忘部分Android
- Android基礎第十一天易忘部分Android
- Android基礎第五天易忘部分Android
- Activity面試彙總, 打牢那些被易忘的基礎知識面試
- Android基礎第九天易忘部分(載入大圖片和縮放圖片)Android
- Android基礎-Activity基本使用Android
- Android基礎之Activity全解析Android
- Android知識點回顧之Activity基礎Android
- Android基礎之Activity 執行模式與回退棧Android模式
- Android 基礎 -- Activity 生命週期實踐總結Android
- java基礎部分Java
- Activity相關備忘
- java基礎題(部分)Java
- Java基礎部分6Java
- Android之Activity基類封裝Android封裝
- android基礎學習-android篇day17-Activity的生命週期(轉)Android
- 常用易忘sqlSQL
- [譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式AndroidView模式
- Android 基於ffmpeg開發簡易播放器 – 基礎知識Android播放器
- Android 基於ffmpeg開發簡易播放器 - 基礎知識Android播放器
- 應用程式基礎知識:activity和intent——Android開發祕籍IntentAndroid
- java基礎易混點Java
- 『現學現忘』Git基礎 — 13、Git的基礎操作Git
- docker學習第八天 docker 基礎之網路配置Docker
- 貝塞爾曲線基礎部分
- JavaScript部分基礎知識點JavaScript
- java基礎部分總結2Java
- Android ActivityAndroid
- Activity 的 "啟動流程"(基於 Android 9.0)Android
- linux基礎知識整理(備忘)Linux
- Android基礎Android
- JavaScript學習筆記——基礎部分JavaScript筆記
- 面試題收集——Java基礎部分(一)面試題Java
- 第六週基礎部分作業
- Android之ActivityAndroid
- 程式設計師找工作必備 PHP 基礎面試題 - 第八天程式設計師PHP面試題
- Android基礎—FragmentAndroidFragment