安卓API指南之Activity回顧
本系列的文章全部為學習摘要,不偏重各種細節展示,更多的是安卓體系重要節點的羅列,并適時加入少量自己的理解分析,以便能快速的回顧安卓體系結構和那些重要的技術點。
每個 Activity 都會獲得一個用于繪制其用戶界面的窗口。窗口通常會充滿屏幕,但也可小于屏幕并浮動在其他窗口之上。比如透明主題或者Dialog主題的Activity。
一個應用通常由多個彼此松散聯系的 Activity 組成。Activity的管理一般是系統通過任務和返回棧來進行的,這個后面在記錄。
- 創建 Activity
創建 Activity,您必須創建 Activity 的子類(或使用其現有子類)。必須在清單文件里聲明該類。例如:
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
一般必須要是實現的方法:onCreate()–在此方法內調用 setContentView(),以定義 Activity 用戶界面的布局;;onPause()–此方法是用戶離開 Activity 的第一個信號。
- 啟動Activity以及獲得結果
//啟動
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);
//啟動獲得結果
private void pickContact() {
// Create an intent to "pick" a contact, as defined by the content provider URI
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
/......
}
}
}
- 實現生命周期回調
在api14+時,系統在Application里添加了記錄Activity生命周期的方法ActivityLifecycleCallbacks,挺實用的,還可以根據onstart和onStop的切換來實時監控應用是否處于后臺。
其它有關的來個表更合適。
是否能在事后終止?列中標記為“否”的方法可從系統調用它們的一刻起防止承載 Activity 的進程被終止。也就是非極端情況下,在執行這些“否”方法時,該Activity不會被回收。
- 保存 Activity 狀態
當Acty被非正常銷毀時,系統會先調用 onSaveInstanceState()來保存一些數據。 當系統重建該 Activity,將會將包含數據的 Bundle 同時傳遞給 onCreate() 和 onRestoreInstanceState()。您可以使用上述任一方法從 Bundle 提取您保存的狀態并恢復該 Activity 狀態。如果沒有狀態信息需要恢復,則傳遞給您的 Bundle 是空值(如果是首次創建該 Activity,就會出現這種情況)。
注意:系統調用 onSaveInstanceState(),它會在調用 onStop() 之前,并且可能會在調用 onPause() 之前進行調用。
- 處理配置變更
有些設備配置可能會在運行時發生變化(例如屏幕方向、鍵盤可用性及語言)。 發生此類變化時,Android 會重建運行中的 Activity(系統調用 onDestroy(),然后立即調用 onCreate())。處理此類重啟的最佳方法是利用onSaveInstanceState() 和 onRestoreInstanceState()(或 onCreate())保存并恢復 Activity 的狀態。具體會在后面的文章中記錄。
作者: 劉咸尚
- 協調 Activity
當 Activity A 啟動 Activity B 時一系列操作的發生順序:
-> Activity A 的 onPause() 方法執行。
-> Activity B 的 onCreate()、onStart() 和 onResume() 方法依次執行。(Activity B 現在具有用戶焦點。)
-> 如果 Activity A 在屏幕上不再可見,則其 onStop() 方法執行。
智能推薦
【小王的安卓之路】Android安卓入門之Activity(活動)及其生命周期
Activity-活動: 1.Activity是什么? 2.Activity的七大生命周期 3.Activity的生老病死 4.多個Activity交互時生命周期的變化 5.Activity的主要啟動方式 一. Activity是什么? 官方文檔是這樣說的: Activity 是一個應用組件,用戶可與其提供的屏幕進行交互,以執行撥打電話、拍攝照片、發送電子郵件或查看地圖等操作。 每個 Activi...
安卓基礎回顧8:Fragment
Fragment碎片 一.Fragment的概述 1.概述: Fragment其實可以理解為一個具有自己生命周期的控件,只不過這個控件又有點特殊,它有自己的處理輸入事件的能力,有自己的生命周期,又必須依賴于Activity,能互相通信和托管。 2.使用Fragment的好處 代碼復用。特別適用于模塊化的開發,因為一個 Fragment可以被多個Activity嵌套,有個共同的業務模塊就可以復用了,...
安卓基礎回顧:屏幕的適配
屏幕的適配 一.什么是屏幕適配 1.定義:簡單說就是解決在不同屏幕尺寸中使其尺寸單位,圖片,文字,依然出現預期的效果。 注意:屏幕的適配實際上就是在res文件夾中創建不同的文件夾 2.重要的概念 在了解屏幕適配之前我們要了解屏幕的尺寸,分辨率,等等重要概念。 屏幕尺寸 含義:手機對角線的物理尺寸 單位:英寸(inch),1英寸=2.54cm Android手機常見的尺寸有5寸、5.5寸、6寸等等 ...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
猜你喜歡
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...