征集到的面试题

搜集到的面试题。
1、

Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法?

onStart()、onResume()、onPause()、onStop()、onRestart()

2、
不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?

A使用startActivityForResult方法开启B,B类结束时调用finish;A类的Intent有一个子Activity结束事件onActivityResult,在这个事件里继续播放音乐。

3、
Service有哪些启动方法?有什么区别?

Service 有两种启动方法,一种是startService,另一种是bindService.

因为Service是在主线程中运行的,所以,如果你在service中做一些耗时的操作的话,应该在service中启动一个线程来完成你的操作。

比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记

录你地理信息位置的改变等等。

a、启动startService,Service会经历onCreate()->onStart() ;如果Service没有运行,Android会先调用onCreate()然后在调用onStart();

如果Service已经运行,则只调用onStart(),所以一个Service的onStart()可能会重复调用多次。

关闭service,在onDestroy中调用stopService或者stopSelf即可。注意,多次调用startService()不会嵌套。

b、启动bindService,Service会经历onCreate()->onBind(),onBind会返回个客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service允许的状态或其他操作。bindservice会与调用者绑定在一起,绑定者退出,service就会调用onUnbind-onDestroy方法相应退出。注意,传递给bindservice()的intent对象会传递给onBind()方法,传递给unbindService()的intent对象会传递给onUnbind()方法。

4、
(音乐播放器)如何加载的音乐信息,如何改善其效率。

ContentResolver提供的查询接口,我们可以得到各种需要的信息。

使用LIstView来改善其效率。

ListVIew 优化使用convertview回收视图+Viewholder模式。

5、
电话状态的监听,改变打电话界面

实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener。
TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用程序可以注册listener来监听电话状态的改变。我们不能对TelephonyManager进行实例化,只能通过获取服务的形式:
Context.getSystemService(Context.TELEPHONY_SERVICE);
注意:对手机的某些信息进行读取是需要一定许可(permission)的。

主要静态成员常量:(它们对应PhoneStateListener.LISTEN_CALL_STATE所监听到的内容)
int CALL_STATE_IDLE   空闲状态,没有任何活动。
int CALL_STATE_OFFHOOK  摘机状态,至少有个电话活动。该活动或是拨打(dialing)或是通话,或是 on hold。并且没有电话是ringing or waiting
int CALL_STATE_RINGING  来电状态,电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。


6、ListView如何提高其效率?

a. 分页
b. 异步加载
c. 耗时操作给用户进度提示

http://blog.****.net/oldmtn/article/details/8804715