1.什么是Activity?
Activity负责连接用户与View,为安卓用户呈现UI界面,是与用户进行交互的组件,在MVC结构中属于C结构。
2.请描述一下Activity生命周期
方法 | 描述 | 可被杀死 | 下一个 | ||
在activity第一次被创建的时候调用。这里是你做所有初始化设置的地方──创建视图、设置布局、绑定数据至列表等。如果曾经有状态记录(参阅后述Saving Activity State。),则调用此方法时会传入一个包含着此activity以前状态的包对象做为参数。 总继之以onStart()。 | 否 | onStart() | |||
| 在activity停止后onStop(),在再次启动之前被调用。 总继之以onStart()。 | 否 | onStart() | ||
当activity正要变得为用户所见时被调用。 当activity转向前台时继以onResume(),在activity变为隐藏时继以onStop()。 | 否 | onResume() | |||
| 在activity开始与用户进行交互之前被调用。此时activity位于堆栈顶部,并接受用户输入。 继之以onPause()。 | 否 | onPause() | ||
当系统将要启动另一个activity时调用。此方法主要用来将未保存的变化进行持久化,停止类似动画这样耗费CPU的动作等。这一切动作应该在短时间内完成,因为下一个activity必须等到此方法返回后才会继续。 当activity重新回到前台是继以onResume()。当activity变为用户不可见时继以onStop()。 | 是 | onResume() | |||
当activity不再为用户可见时调用此方法。这可能发生在它被销毁或者另一个activity(可能是现存的或者是新的)回到运行状态并覆盖了它。 如果activity再次回到前台跟用户交互则继以onRestart(),如果关闭activity则继以onDestroy()。 | 是 | onRestart() | |||
在activity销毁前调用。这是activity接收的最后一个调用。这可能发生在activity结束(调用了它的 finish() 方法)或者因为系统需要空间所以临时的销毁了此acitivity的实例时。你可以用isFinishing() 方法来区分这两种情况。 | 是 | nothing |
正常启动与关闭:oncreate->onstart->onresume->onpause->onstop->onDestroy()
A开启后开启B :oncreate(A)->onstart(A)->onresume(A)->onpauese(A)->oncreate(B)->onstart(B)->onresume(B)
->onsaveInstanceState(A)->onstop(A)->
3.两个Activity之间跳转时必然会执行的是哪几个方法。
startActivity(Intent intent) ;
startActivityForResult (Intent intent, int requestCode) ;
onActivityResult (int requestCode, int resultCode, Intent data);
setResult(int resultCode)
4.横竖屏切换时候Activity的生命周期。
onpause()->onsaveInstanceState()->onstop()->ondestroy()->oncreate()->onstart->onresume()
5.如何将一个Activity设置成窗口的样式
打开AndroidManifest.xml,往activity里添加主题android:theme="@android:style/Theme.Dialog"
附:
在onSaveInstanceState()中进行数据保存,再次创建时调用oncreate会附带一个bundle,利用bundle可以进行数据还原
7.如何退出Activity?如何安全退出已调用多个Activity的Application?
单一的Activity:直接调用finish(),system.exit(),killProcess()
多个的Activity:
1、抛异常强制退出:
该方法通过抛异常,使程序Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
2、记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4、递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
8.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
同6
9.两个Activity之间怎么传递数据?
通过Intent,可以传递各种类型的数据,包括对象
或者使用SharedPreferences 实现数据共享
10.怎么让在启动一个Activity是就启动一个service?
首先定义好一个service,然后在activity的onCreate里面进行bindservice或者startService。