資源描述:
《android面試時生命周期與handler、HandlerThread》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、關(guān)于activity:生命周期用戶進(jìn)入A界面調(diào)用A的(初始化信息onCreate、可見onStart、人機交互onResume)由A通過Intent完成跳轉(zhuǎn)進(jìn)入B時調(diào)用A的(onPause)然后調(diào)用B的(初始化信息onCreate、可見onStart、人機交互onResume)如果A的界面完全不可見則會調(diào)用A的onStop由B返回A時調(diào)用B的onPause,然后調(diào)用A的(初始化信息onRestart、可見onStart、人機交互onResume)調(diào)用B的onStop再調(diào)用B的onDestroy銷毀B,android的緩存是不可逆的
2、,只能回退不能向前,在activity的生命周期中,只要離開了可見階段,或者說失去了焦點,activity就很可能被進(jìn)程終止了被KILL掉了,這時候,就需要有種機制,能保存當(dāng)時的狀態(tài),這就是savedInstanceState的作用。當(dāng)一個Activity在PAUSE時,被kill之前,它可以調(diào)用onSaveInstanceState()來保存當(dāng)前activity的狀態(tài)信息(在paused狀態(tài)時,要被KILLED的時候)。用來保存狀態(tài)信息的Bundle會同時傳給兩個method,即onRestoreInstanceState()a
3、ndonCreate().關(guān)于線程與handlerHandler: Handler在android里負(fù)責(zé)發(fā)送和處理消息。它的主要用途有: 1)按計劃發(fā)送消息或執(zhí)行某個Runnanble(使用POST方法);2)從其他線程中發(fā)送來的消息放入消息隊列中,避免線程沖突(常見于更新UI線程)publicclassDemoHandlerextendsActivity{/**Calledwhentheactivityisfirstcreated.*/privateButtonbtn01,btn02;@Overridepublicvoidon
4、Create(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);btn01=(Button)findViewById(R.id.Button01);btn02=(Button)findViewById(R.id.Button02);btn01.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//執(zhí)行把線
5、程添加到主線程中handler.post(update);}});btn02.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//執(zhí)行把線程從主線程移除任務(wù)handler.removeCallbacks(update);}});}//創(chuàng)建Handler對象Handlerhandler=newHandler();//將要執(zhí)行的操作寫在線程對象的run方法當(dāng)中Runnableupdate=newRunnable(){@Overridep
6、ublicvoidrun(){//TODOAuto-generatedmethodstubSystem.out.println("000");//每三秒執(zhí)行一次update方法即從新執(zhí)行該方法handler.postDelayed(update,3000);}};}(第一步創(chuàng)建一個Handler對象,第二步寫一個Runnable線程,實現(xiàn)里面的run方法,在run方法中handler的postDelayed方法(每3000毫秒啟動一次update方法)第三步給控件btn一個監(jiān)聽,調(diào)用handler.psot和handler.rem
7、oveCallbacks方法壓入線程和移除線程。這一個過程不存在創(chuàng)建新線程的行為,只是完成的調(diào)用)publicclassHandlerThreadDemoextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);System.out.println("act
8、ivityId-->"+Thread.currentThread().getId());//創(chuàng)建一個HandlerThread對象,HandlerThreadht=newHandlerThread("handler_thread");ht.star