public class MyActivity extends Activity { protected void onCreate(Bundle
savedInstanceState); protected void onStart(); protected void onResume(); protected
void onPause(); protected void onStop(); protected void onDestroy(); }
你自己写的 Activity 会按需要 重载这些方法,onCreate 是免不了的,在一个 Activity
正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, 在 Activity 被
干掉的时候顺序是 onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期,但
是有人问了 ,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出
的一个 Activity 是全屏的那么:onPause->onStop ,恢复的时候 onStart->onResume ,如
果打断 这个应用程序的是一个 Theme 为 Translucent 或者 Dialog 的 Activity 那么只是
onPause ,恢复 的时候 onResume 。
详细介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate: 在这里创建界面 ,做一些数据 的初始化工作
onStart: 到这一步变成用户可见不可交互 的
onResume: 变成和用户可交互 的,(在 activity 栈系统通过栈的方式管理这些个
Activity 的最上面,运行完弹出栈,则回到上一个 Activity)
onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗 CPU 的事情
从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候
你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在
onResume 里读出来,注意:这个方法里做的事情时间要短,因为下一
个 activity 不会等到这个方法完成才启动
onstop: 变得不可见 ,被下一个 activity 覆盖了
onDestroy: 这是 activity 被干掉前最后一个被调用方法了,可能是外面类调用 finish 方
法或者是系统为了节省空间将它暂时性的干掉,可以用 isFinishing()来判
断它,如果你有一个 Progress Dialog 在线程中转动,请在 onDestroy 里
把他 cancel 掉,不然等线程结束的时候,调用 Dialog 的 cancel 方法会抛
异常的。
onPause,onstop, onDestroy,三种状态 下 activity 都有可能被系统干掉
为了保证程序的正确性,你要在 onPause()里写上持久层操作的代码,将用户编辑的内容
都保存到存储介质上(一般都是数据库 )。实际工作中因为生命周期的变化而带来的问题也
很多,比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是
暂停还是杀掉还是数据 回滚,是吧?因为 Activity 可能被杀掉,所以线程中使用的变量和一
些界面元素就千万要注意了,一般都是采用 Android 的消息机制 [Handler,Message]来处理
多线程和界面交互的问题。
10、让 Activity 变成一个窗口:Activity 属性设定
讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么
很
简单你只需要设置 一下 Activity 的主题就可以了在 AndroidManifest.xml 中定义
Activity 的
地方一句话:
Xml 代码
android :theme=”@android:style/Theme.Dialog”
android:theme=”@android:style/Theme.Dialog”
这就使你的应用程序变成对话框的形式弹出来了,或者
Xml 代码