- 工具:Android Studio忠寻,XMind团秽,馬克飛象,印象筆記
- 2016年12月8日晦譬,Google中國開發(fā)者大會在京舉行疤苹,同時正式上線了Google中國開發(fā)者網(wǎng)站Google Developers,查看官方學(xué)習資源再也不用爬梯子了
- 簡介
- 使用流程
- 跳轉(zhuǎn)方式
- 生命周期
Activity的簡介
Activity是Android四大組件之一敛腌,它用于展示界面卧土。Activity是一個應(yīng)用程序組件,提供一個屏幕像樊,用戶可以用來交互為了完成某項任務(wù)尤莺。Activity中所有操作都與用戶密切相關(guān),是一個負責與用戶交互的組件生棍,可以通過setContentView(View)來顯示指定控件颤霎。
在一個android應(yīng)用中,一個Activity通常就是一個單獨的屏幕涂滴,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應(yīng)友酱。Activity之間通過Intent進行通信。
使用流程
- 定義類繼承Activity
- 在AndroidManifest.xml的<application>節(jié)點中聲明<activity>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
- Intent-filter子節(jié)點:
添加意圖過濾柔纵,可以通過隱式意圖啟動缔杉。可以在桌面生成快捷方式搁料,應(yīng)用程序的入口或详。
跳轉(zhuǎn)方式
- 顯式跳轉(zhuǎn):在可以引用到那個類, 并且可以引用到那個類的字節(jié)碼時可以使用,一般用于自己程序的內(nèi)部郭计,顯式跳轉(zhuǎn)不可以跳轉(zhuǎn)到其他程序的頁面中霸琴。
- 隱式跳轉(zhuǎn):可以在當前程序跳轉(zhuǎn)到另一個程序的頁面,隱式跳轉(zhuǎn)不需要引用到那個類,但是必須得知道那個界面的action和category昭伸。
- Activity之間通過Intent進行通信梧乘。Intent,用于描述一個頁面的信息,同時也是一個數(shù)據(jù)的載體勋乾。
- 你可以用startActivity(),或startActivityForResult()(如果你想要Activity返回數(shù)據(jù))傳遞一個Intent來開啟一個Activity(或者讓它做一些其他東西)宋下。
- Intent除了可以激活組件,還可以通過封裝的Bundle對象來攜帶數(shù)據(jù)辑莫。所以在啟動一個Activity的時候,同時還可以傳遞數(shù)據(jù)罩引,然后在新的Activity中可以獲得意圖對象以獲取其中Bundle保存的數(shù)據(jù)各吨。
- Intent可傳遞的數(shù)據(jù)類型有: 八大基本數(shù)據(jù)類型,String,數(shù)組,ArrayList<String>, Bundle數(shù)據(jù)捆, 實現(xiàn)序列化接口的 Javabean。
隱式跳轉(zhuǎn)打開瀏覽器界面:1. 配置文件 2.程序代碼
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="about" />
<data android:scheme="javascript" />
</intent-filter>
//跳轉(zhuǎn)到瀏覽器界面代碼
public void skip2Browser(View view){
//創(chuàng)建一個Intent對象
Intent intent = new Intent();
//設(shè)置Action
intent.setAction("android.intent.action.VIEW");
//設(shè)置category
intent.addCategory("android.intent.category.BROWSABLE");
//設(shè)置參數(shù)
intent.setData(Uri.parse("http://www.baidu.com"));
//啟動Activity
startActivity(intent);
}
生命周期
Activity有三種狀態(tài):
- 當它在屏幕前臺時,響應(yīng)用戶操作的Activity, 它是激活或運行狀態(tài)揭蜒。
- 當它上面有另外一個Activity横浑,使它失去了焦點但仍然對用戶可見時, 它處于暫停狀態(tài)。
- 當它完全被另一個Activity覆蓋時則處于停止狀態(tài)屉更。
-
當Activity從一種狀態(tài)轉(zhuǎn)變到另一種狀態(tài)時徙融,會調(diào)用其生命周期方法。
- startActivity開啟一個Activity時, 生命周期的過程是: onCreate ---onStart(可見不可交互) ---onResume(可見可交互)瑰谜。
- 點擊back鍵關(guān)閉一個Activity時, 生命周期的過程是: onPause(部分可見不可交互) ---onStop(完全不可見) ---onDestroy(銷毀)欺冀。
- 當開啟一個新的Activity(以對話框形式),新的activity把后面的activity給蓋住一部分時萨脑,后面的activity的生命周期執(zhí)行的方法是:onPause(部分可見, 不可交互)隐轩。
注意:指定Activity以對話框的形式顯示, 需在activity節(jié)點追加以下主題android:theme="@android:style/Theme.Dialog"。 - 當把新開啟的Activity(以對話框形式)給關(guān)閉時, 后面的activity的生命周期執(zhí)行的方法是: onResume(可見渤早,可交互)职车。
- 當開啟一個新的activity把后面的activity完全蓋住時, 生命周期的方法執(zhí)行順序是: onPause ---onStop(完全不可見)。
- 當把新開啟的activity(完全蓋住)給關(guān)閉時, 生命周期的方法執(zhí)行順序是: onRestart---onStart ---onResume(可見, 可交互)鹊杖。
- 實際應(yīng)用場景:onResume 可見, 可交互悴灵,在該方法中可進行刷新數(shù)據(jù)操作;onPause 可見骂蓖,但是不能響應(yīng)用戶操作称勋,在該方法中可進行操作暫停;onCreate 初始化布局以及一些大量的數(shù)據(jù)涯竟;onDestroy 把數(shù)據(jù)給釋放掉, 節(jié)省內(nèi)存赡鲜。
保存Activity信息
- onSaveInstanceState:在Activity被動的摧毀或停止的時候調(diào)用,用于保存運行數(shù)據(jù)庐船,可以將數(shù)據(jù)存在在Bundle中银酬。onPause之后執(zhí)行。被動消耗筐钟,指被系統(tǒng)回收揩瞪,不是主動調(diào)用finish方法。
- onRestoreInstanceState:該方法在Activity被重新繪制的時候調(diào)用篓冲,例如改變屏幕方向李破,savedInstanceState為onSaveInstanceState保存的數(shù)據(jù)。
- Activity重新創(chuàng)建壹将,恢復(fù)數(shù)據(jù)嗤攻,onStart之后執(zhí)行。如果activity停止之后诽俯,進程在后頭很容易被殺死妇菱,然后重新啟動,就會執(zhí)行恢復(fù)數(shù)據(jù)方法。