欢迎来到天天文库
浏览记录
ID:40545749
大小:31.50 KB
页数:3页
时间:2019-08-04
《android面试时生命周期与handler、HandlerThread》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、关于activity:生命周期用户进入A界面调用A的(初始化信息onCreate、可见onStart、人机交互onResume)由A通过Intent完成跳转进入B时调用A的(onPause)然后调用B的(初始化信息onCreate、可见onStart、人机交互onResume)如果A的界面完全不可见则会调用A的onStop由B返回A时调用B的onPause,然后调用A的(初始化信息onRestart、可见onStart、人机交互onResume)调用B的onStop再调用B的onDestroy销毁B,android的缓存是不可逆的
2、,只能回退不能向前,在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了被KILL掉了,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用。当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息(在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState()a
3、ndonCreate().关于线程与handlerHandler: Handler在android里负责发送和处理消息。它的主要用途有: 1)按计划发送消息或执行某个Runnanble(使用POST方法);2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新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){//执行把线
5、程添加到主线程中handler.post(update);}});btn02.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//执行把线程从主线程移除任务handler.removeCallbacks(update);}});}//创建Handler对象Handlerhandler=newHandler();//将要执行的操作写在线程对象的run方法当中Runnableupdate=newRunnable(){@Overridep
6、ublicvoidrun(){//TODOAuto-generatedmethodstubSystem.out.println("000");//每三秒執行一次update方法即从新执行该方法handler.postDelayed(update,3000);}};}(第一步创建一个Handler对象,第二步写一个Runnable线程,实现里面的run方法,在run方法中handler的postDelayed方法(每3000毫秒启动一次update方法)第三步给控件btn一个监听,调用handler.psot和handler.rem
7、oveCallbacks方法压入线程和移除线程。这一个过程不存在创建新线程的行为,只是完成的调用)publicclassHandlerThreadDemoextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);System.out.println("act
8、ivityId-->"+Thread.currentThread().getId());//创建一个HandlerThread对象,HandlerThreadht=newHandlerThread("handler_thread");ht.star
此文档下载收益归作者所有