Activity常用方法
只列舉Activity中常用的方法,方法的參數(shù)一一列舉,只簡(jiǎn)單說(shuō)明方法作用
在AndroidStudio中復(fù)寫(xiě)方法的快捷鍵 command + o
一. Activity生命周期方法
生命周期評(píng)價(jià)就是對(duì)某物從產(chǎn)生到消亡以及消亡后所產(chǎn)生的效應(yīng)進(jìn)行全過(guò)程的評(píng)價(jià),Activity的生命周期也就是指某個(gè)Activity從創(chuàng)建到銷毀的整個(gè)過(guò)程中,生命周期方法就是指在這個(gè)過(guò)程中所執(zhí)行的方法.
1. onCreate()
當(dāng)Activity創(chuàng)建時(shí)執(zhí)行這個(gè)方法,也就是Activity被實(shí)例化時(shí)執(zhí)行的方法,一般會(huì)在這個(gè)方法中初始化一些成員變量
2. onRestart()
當(dāng)Activity轉(zhuǎn)變成后臺(tái),再回來(lái)前臺(tái)時(shí)執(zhí)行,也就是當(dāng)Activity在被執(zhí)行過(guò)onStop()方法后,再回到前臺(tái)時(shí)才會(huì)執(zhí)行,這個(gè)方法里面一般做和onStart()方法做同樣的事情
3. onStart()
當(dāng)Activity成為前臺(tái)進(jìn)程時(shí)執(zhí)行這個(gè)方法,也就是打開(kāi)的頁(yè)面是當(dāng)前Activity時(shí),一般是處理一些頁(yè)面打開(kāi)才需要進(jìn)行的操作
4. onResume()
當(dāng)Activity由不可見(jiàn)變可見(jiàn)時(shí)執(zhí)行這個(gè)方法,一般處理一些處理特效
5. onPause()
與onResume()方法對(duì)應(yīng),當(dāng)Activity由可見(jiàn)變不可見(jiàn)時(shí)執(zhí)行這個(gè)方法,一般處理些當(dāng)Activity不可見(jiàn)時(shí)需要進(jìn)行的操作
6. onStop()
與onStart()方法對(duì)應(yīng),當(dāng)Activity成為后臺(tái)進(jìn)程時(shí)執(zhí)行這個(gè)方法,一般處理些當(dāng)Activity不在前臺(tái)需要進(jìn)行的操作
7. onDestory()
與onCreate()方法對(duì)應(yīng),當(dāng)Activity被銷毀時(shí)執(zhí)行,一般在這個(gè)方法中釋放資源,例如關(guān)閉流,cursor,
這七個(gè)方法的執(zhí)行順序是從上到下依次執(zhí)行的,當(dāng)需要在那個(gè)過(guò)程中做操作可以直接復(fù)寫(xiě)這個(gè)方法,并在方法中添加相應(yīng)的操作就可以了
#######創(chuàng)建一個(gè)新的Activity分別復(fù)寫(xiě)這七個(gè)方法,然后在里面分別打印log,運(yùn)行查看log
public class TestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("test","onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.e("test","onStart");
}
@Override
protected void onRestart() {
super.onRestart();
Log.e("test","onRestart");
}
@Override
protected void onResume() {
super.onResume();
Log.e("test","onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.e("test","onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.e("test","onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("test","onDestroy");
}
}
二. Activity狀態(tài)保存方法
- onSaveInstanceState(Bundle)
- onRestoreInstanceState(Bundle)
當(dāng)設(shè)備的配置(橫豎屏震叮、語(yǔ)言等)發(fā)生變化而使Activity自動(dòng)銷毀重建仪搔,或者Activity從前臺(tái)轉(zhuǎn)到后臺(tái)(如,按下Home鍵)的時(shí)候雇庙,Activity會(huì)調(diào)用onSaveInstanceState(Bundle)方法將當(dāng)前Activity的狀態(tài)保存到一個(gè)Bundle變量中雇初。這個(gè)Bundle變量與onCreate(Bundle)方法和onRestoreInstanceState(Bundle)中的Bundle參數(shù)是同一個(gè)域庇,也就是說(shuō)字币,后兩個(gè)方法通過(guò)傳入的Bundle參數(shù)還原Activity的狀態(tài)。
雖然Activity的狀態(tài)保存到了Bundle中一忱,但是數(shù)據(jù)卻不會(huì)自動(dòng)保存到Bundle中莲蜘。要想保存這些數(shù)據(jù)就需要在onSaveInstanceState手動(dòng)地設(shè)置一些重啟后需要的狀態(tài)數(shù)據(jù),可以直接調(diào)用該Bundle實(shí)例的putXXX方法存入額外的數(shù)據(jù)信息,然后復(fù)寫(xiě)onRestoreInstanceState或者onCreate()方法在方法的參數(shù)bundle中取出所保存的值設(shè)置到當(dāng)前的Activity中完成Activity的恢復(fù).
三. View相關(guān)方法
-
setContentView(View view)
為Activity設(shè)置一個(gè)layout(布局),一般在onCreate()方法中調(diào)用這個(gè)方法為當(dāng)前Activity設(shè)置布局
-
findViewById(int id)
通過(guò)id獲取當(dāng)前Activity中的控件,一般取出后需要強(qiáng)制轉(zhuǎn)換成布局中對(duì)應(yīng)的控件,然后進(jìn)行操作
四. 事件想關(guān)
-
onTouchEvent(MotionEvent event)
當(dāng)發(fā)生屏幕點(diǎn)擊事件,當(dāng)事件被處理結(jié)束后不需要其他控件再處理這個(gè)事件時(shí),也就是這個(gè)事件已經(jīng)被消費(fèi)時(shí),返回true
-
onKeyDown(int keyCode, KeyEvent event)
鍵盤(pán)或者按鈕被點(diǎn)擊按下時(shí)執(zhí)行,當(dāng)事件被消費(fèi)返回true
-
onKeyUp(int keyCode, KeyEvent event)
鍵盤(pán)或按鍵被點(diǎn)擊手抬起時(shí)執(zhí)行,當(dāng)事件被消費(fèi)返回true
-
onBackPressed()
當(dāng)點(diǎn)擊返回按鈕時(shí)執(zhí)行(系統(tǒng)的返回按鍵),當(dāng)事件被消費(fèi)返回true
-
onKeyLongPress(int keyCode, KeyEvent event)
當(dāng)鍵盤(pán)或按鍵被找按時(shí)執(zhí)行,當(dāng)事件被消費(fèi)返回true
-
dispatchKeyEvent(KeyEvent event)
事件會(huì)發(fā),當(dāng)按鈕點(diǎn)擊事件發(fā)生時(shí),會(huì)先執(zhí)行這個(gè)方法決定這個(gè)事件是否繼續(xù)傳遞下去
三. Activity中的其他方法
-
getLayoutInflater()
得到一個(gè)LayoutInflater對(duì)像,這個(gè)用像用于在代碼中創(chuàng)建一個(gè)布局對(duì)象(View)
-
startActivity
打開(kāi)一個(gè)新的Activity
-
startActivityForResult(android.content.Intent, int)
打開(kāi)一個(gè)新的Activity并返回給當(dāng)前Activity一些信息
-
setResult(int resultCode, Intent data)
當(dāng)調(diào)用startActivityForResult打開(kāi)一個(gè)新的Activity時(shí),在新的Activity中使用這個(gè)方法設(shè)置返回的信息
-
getSystemService(String name)
獲取系統(tǒng)的服務(wù),可獲取的服務(wù)Context.WINDOW_SERVICE ("window") 窗口管理 windowManager Context.LAYOUT_INFLATER_SERVICE ("layout_inflater") LayoutInflater Context.ACTIVITY_SERVICE ("activity") ActivityManager Context.POWER_SERVICE ("power") PowerManager Context.ALARM_SERVICE ("alarm") AlarmManager Context.NOTIFICATION_SERVICE ("notification") NotificationManager Context.KEYGUARD_SERVICE ("keyguard") KeyguardManager Context.LOCATION_SERVICE ("location") LocationManager Context.SEARCH_SERVICE ("search") SearchManager Context.VIBRATOR_SERVICE ("vibrator") Vibrator Context.CONNECTIVITY_SERVICE ("connection") ConnectivityManager Context.WIFI_SERVICE ("wifi") WifiManager Context.INPUT_METHOD_SERVICE ("input_method") InputMethodManager
可以能過(guò)系統(tǒng)對(duì)應(yīng)的服務(wù)設(shè)置系統(tǒng)功能,
-
runOnUiThread(Runnable action)
安卓系統(tǒng)不允許子純種修改UI,同時(shí)不可以在主線程中進(jìn)行耗時(shí)操作,那么當(dāng)子線程和主線程進(jìn)行數(shù)據(jù)交互時(shí),在子線程中使用些方法把任務(wù)發(fā)回到主線程中執(zhí)行
-
getPreferences(int)
獲取緩存對(duì)象(數(shù)據(jù)存儲(chǔ)方式中的一種)
-
getIntent()
獲取打開(kāi)當(dāng)前Activity的Intent對(duì)象,一般打開(kāi)Activity需要攜帶數(shù)據(jù)時(shí),會(huì)把這些數(shù)據(jù)放到這個(gè)Intent中
-
getFragmentManager()
獲取Fragment管理器對(duì)象,當(dāng)Activity中有Fragment時(shí)需要使用些對(duì)象
-
getApplication()
獲取app的Application對(duì)象,這個(gè)對(duì)象在App被打時(shí)時(shí)創(chuàng)建,真到App被關(guān)閉結(jié)束
-
finish()
結(jié)束當(dāng)前Activity