Activity面试题集

1.什么是Activity?
Activity是android的四大组件中最常见的部分,是Android用于交互的部分。Activity有四种状态: Active/RuningPausedStopedKilled。主要有七个生命周期方法。通过Intent与其他Activity或者组件通信。

2.请描述一下Activity生命周期。
参考 Activity生命周期

3. 两个 Activity 之间跳转时必然会执行的是哪几个方法。
这个问题与 从A跳转到B需要执行那些生命周期方法 的意思是相同的。分为两种情况:B不透明时,A执行除onDestory之外的全部方法,B执行到onResume方法;B透明时,A执行到onPause方法,B执行到onResume方法。

4. 横竖屏切换时候 Activity 的生命周期。
参考Activity生命周期,不过说的不够详细,还有一些情况没说,可以查看其中的参考资料。

5. 如何将一个 Activity 设置成窗口的样式。
 
   在AndroidManifest.xml中在你需要显示为窗口的activity中添加如果属性:android:theme="@style/Theme.FloatActivity" 即可 
   

6.你后台的Activity被系统回收怎么办?如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?
onSaveInstanceState在这个方法中保存信息。在onCreate中判断savedInstanceState是否为空,不为空就去出来。

7.如何退出Activity?如何安全退出已调用多个Activity的Application?
退出单个Activity调用finish()方法。
参考 http://blog.csdn.net/debug2/article/details/6193644

8. 两个 Activity 之间怎么传递数据?
可以通过Intent,Bundle或者SharedPreferences都可以传递数据。

9.怎么在启动一个Activity时就启动一个service?
在activity的onCreate里写
startService(xxx);
然后
this.finish();结束自己..
这是最简单的方法 可能会有屏幕一闪的现象,如果UI要求严格的话用AIDL把

根据service与activity的生命周期,选择在onCreate或onResume中startService;当然要记得stopService.

10.同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?
可以放在不同的Task中。需要为不同的activity设置不同的taskaffinity属性,启动activity的Intent需要包含FLAG_ACTIVITY_NEW_TASK标记

11.Activity怎么和service绑定,怎么在activity中启动自己对应的service?

startService()一旦被创建 调用着无关 没法使用service里面的方法
bindService () 把service 与调用者绑定,如果调用者被销毁, service会销毁
bindService() 我们可以使用service 里面的方法
bindService(). 让activity能够访问到service里面的方法
构建一个intent对象,
Intent service = new Intent(this,MyService.class);
通过bindService的方法去启动一个服务,
bindService(intent, new MyConn(), BIND_AUTO_CREATE);
ServiceConnection 对象(重写onServiceConnected和OnServiceDisconnected方法) 和BIND_AUTO_CREATE.
private class myconn implements ServiceConnection

{

public void onServiceConnected(ComponentName name,IBinder service) {
// TODO Auto-generated method stub
//可以通过IBinder的对象 去使用service里面的方法
}

public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub

}

}


你可能感兴趣的:(android)