您的位置:首页 > 职场人生

Android常见面试题总结(二)

2017-08-23 17:18 232 查看
1、Activity正常、异常情况下的生命周期流程。

正常:onCreate(表示Activity正在创建,这是生命周期的和第一人上方法。)

onResume(表示Activity已经被用户可见,并且出现在前台开始活动)

onStart(表示Activity正在被启动)

onPause(表示被暂停)

onRestart(被重启)

onDestroy(被销毁)

异常:(1)当用户打开一个新的Activity的时候,回调如下:

onPause-àonStop;

(2)当用户再次回到原Activity的时候,回调:

onRestart-àonStart-àonResume;

(3)当用户按下back回退的时候,回调如下:

onPause-àonStop-àonDestroy;

(4)当Activity被回收后再次打开,生命周期回调同正常的一样:

(5)当系统配置发生变化后,Activity被销毁掉,回调onPauseàonStropàonDestroy方法,而且由于是异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activiy的状态。这个方法调用的时机是在onStop之前,此方法只会出现在Activity被异常终止的情况,正常情况下是不会回调此方法。

(6)当Activity被重新创建后,系统会调用onRestorInstanceState,并且把Activity销毁时onSaveInstatnceState方法所保存的Bundle对象会作为参数 同时传递给onRestoreInstanceState和onCreate方法,因此可以通过这两个方法来判断Activity是否被重建了,若被重建了可以取出之前保存的数据并恢复,注意:从时序上来说,onRestorInstanceState的调用时候是在onStrat之后。

3、IntentService比Service好在哪里。

Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,为了保证应用某些组件仍然可以工作面引入的,它不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多的时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR.

那么当我们编写耗时逻辑的时候,就需要引入IntentService,Intentservice是继承Service的,那么与Service不同的是,IntentService在执行onCreate操作的时候,内部开了一个线程,去执行你的耗时操作。

Service本身提供了一个方法 onStartCommand()…….

同时IntentService中提供了这么一个方法:

provtected abstract void onHandlerIntent(Intentintent);

 

IntentService是通过Handler looper message的方式实现了一个多线程的操作,同时耗时操作也可以被这个线程管理和执行,同时不会产生ANR的情况。

 

4、Thread和HandlerThread的区别。

我的博客中有写到相关的例子。

5、<include><merge><ViewStub>三者的使用场景。

<include>是如果存在相同的布局的时候,会将相同的xml文件写在一个布局文件中,减少代码的冗余。

<merge>它可以删减多余的层级,<merge/>多用于替换FragmeLayout或者当一个布局包含另一个时,消除视图层次多余的视图级。

<ViewStub>当你需要的时候再进行加载,比如一些错误信息。

1.  ((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);  
2. // or  
3.  View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();  

 

6、HashSet和HashMap区别。

HashSet实现了Set接口,它不允许集合中有重复的值。

HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许有重复的键。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: