Android中的一些基础知识(二)
這幾天在回顧Android的基礎知識,就把一些常見的知識點整理一下,以后忘了也可以翻出來看一看。
? ?
- 簡單介紹一下Activity的生命周期?
在API文檔中對生命周期回調(diào)的函數(shù)描述的很詳細,這里我只是翻譯了一下。- onCreate:當Activity第一次被創(chuàng)建的時候調(diào)運。應該在這個回調(diào)函數(shù)中做所有的初始化操作,比如:創(chuàng)建View,給lists綁定數(shù)據(jù)等。在這個函數(shù)執(zhí)行完后,通常會調(diào)運onStart方法。Always followed by onStart()(這句就不用翻譯了吧)
- onRestart:當Activity被stop后,有重新啟動的時候調(diào)運。Always followed by onStart()(這句就不用翻譯了吧)
- onStart:當Activity對用戶可見之前調(diào)運。當Activity要顯示到前臺(對用戶可見)時,Followed by onResume();當Activity要隱藏時,Followed by onStop() 。
- onResume:當Activity開始用用戶交互的時候回調(diào)此方法。此時這個Activity在Activity棧的頂端。Always followed by onPause().
- onPause:當系統(tǒng)準備打開另一個Activity的時調(diào)用。此方法通常被用來保存當前的數(shù)據(jù)、停止動畫、一些消耗cpu的操作等。并且應該處理的很及時。
- onStop:當Activity對用戶不可見的時候調(diào)運。
- onDestroy:在Activity被銷毀之前調(diào)運。
Activity的這幾個生命周期函數(shù)是成對出現(xiàn)的:onCreate和onDestroy,onStart和onStop(Activity的View已被創(chuàng)建,但對用戶不可見),onResume和onPause(Activity對用戶仍然可見)。
? ?
- 如果Activity A正在運行,現(xiàn)在打開Activity B,Activity A、B的生命周期方法的執(zhí)行順序是怎樣的??
在Android API中是這樣onPause方法的:
Called when the system is about to start resuming another activity.
它是說當系統(tǒng)準備打開另一個Activity的時候調(diào)用onPause方法。因此,此過程應該是這樣的:
通過運行程序,打印log,也可以驗證這個的結論,log截圖如下:?
- 兩個Activity之間怎么傳遞數(shù)據(jù)?
基本的數(shù)據(jù)可以通過Intent的putExtra()來傳遞,如果是其他數(shù)據(jù)類型,可以通過Intent的putExtras()來傳遞,此時改函數(shù)里需要傳遞一個Bundle類型的數(shù)據(jù),Bundle可以通過如下兩種方式來創(chuàng)建
1 Bundle bundle=new Bundle(); 2 bundle.putSerializable("data",obj);
或者
1 Bundle bundle=new Bundle(); 2 bundle.putParcelable("data",obj);其中 obj分別需要繼承自Serializable或者Parcelable。這里說一下Serializable和Parcelable是區(qū)別。Serializable是Java中的,它是將數(shù)據(jù)以二進制的形式寫入的文件中來保存的,需要時就從文件中讀取。而Parcelable是Android中獨有的,它是將數(shù)據(jù)寫入到內(nèi)存中,用的時候直接從內(nèi)存中度取,因此效率較高,但是Parcelable不能放較大的數(shù)據(jù),因為這樣會導致OOM。
描述一下Service的生命周期、啟動方式及區(qū)別、如何停止Service??
-
在Service的生命周期中被調(diào)用的方法有:onCreate、onStart、onDestroy、onBind、onUnbind,顯然比Activity的少許多。?
Service的啟動方式有兩種:- 通過startService:?
Service會經(jīng)過onCreate,onStart,然后運行,在調(diào)用stopService時,會回調(diào)onDestroy方法,停止Service。如果此種情況下打開Service的Activity退出前不調(diào)運stopService,次Service會一直運行,直至被系統(tǒng)回收(當系統(tǒng)內(nèi)存不夠時)。 - 通過bindService:?
Service會經(jīng)過onCreate,onBind,然后運行,在調(diào)用unBindService時,會回調(diào)onDestroy方法,停止Service。如果此種情況下打開的Service會和打開它的Activity綁定在一起,Activity銷毀,Service也被銷毀。
注:一個Service只會被創(chuàng)建一次,當它執(zhí)行完onCreate方法后,調(diào)運再startService,只會執(zhí)行onStart方法,調(diào)運再bindService,只會執(zhí)行onBind方法。?
被start的Service只能調(diào)運stopService來停止Service,被bind的Service只能調(diào)運unBindService來停止Service。同時調(diào)運了start、bind的Service則分別需要調(diào)運stopService、unBindService來停止Service。當然,由于系統(tǒng)內(nèi)存不夠,Service被回收的情況例外。?
- 通過startService:?
轉(zhuǎn)載于:https://www.cnblogs.com/yxx123/p/5272832.html
總結
以上是生活随笔為你收集整理的Android中的一些基础知识(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卧槽,入职 3 天就“偷”代码,备份 6
- 下一篇: webpack打包后引用cdn的js_利