android学习之Activity的生命周期
2015-11-02 13:52
531 查看
生命周期描述的是一个类从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法。在这个过程中,会针对不同的生命阶段调用不同的的方法。
Activity是android中四大组件之一,是最常见的应用组件,也是用的最多的组件,它能够提供一个界面与用户进行交互。Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate onDestory onStart onStop onResume onPause。这些方法都是两两对应的,onCreate-->创建与onDestory-->销毁;onStart-->可见与onStop-->不可见;onResume-->可编辑(焦点)和onPause-->未获得焦点。最后还有一个方法是onRestart,这个方法在什么时候调用呢?当Activity被onStop后,但是并没有onDestory,即并没有被销毁时,用户重新回到当前Activity时,就调用onRestart方法,这里就不再是调用onCreate方法了。
public class MainActivity extends ActionBarActivity {
private final static String TAG = "MainActivity";
@Override
// Activity被创建时调用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, "onCreate.......");
}
@Override
// 该状态用户可见,但是用户还不能与之进行交互
protected void onStart() {
super.onStart();
Log.e(TAG, "onStart.......");
}
@Override
// 该状态是Activity获得用户焦点,用户可以与之进行交互
protected void onResume() {
super.onResume();
Log.e(TAG, "onResume.......");
}
@Override
//与onResume对应,当Activity失去焦点时调用
protected void onPause() {
super.onPause();
Log.e(TAG, "onPause.......");
}
@Override
//与onStart对应,当Activity不可见时调用
protected void onStop() {
super.onStop();
Log.e(TAG, "onStop.......");
}
@Override
//与onCreate对应,当Activity被销毁时调用
protected void onDestroy() {
super.onDestroy();
Log.e(TAG, "onDestroy.......");
}
@Override
//Activity从后台重新回到前台调用
protected void onRestart() {
super.onRestart();
Log.e(TAG, "onRestart.......");
}
}
Activity的完整生命周期:oncreate-->onstart-->onresume-->onpause-->onstop-->ondestory。用户在点击返回键的时候,Activity会销毁,这时Activity先是不可编辑,再是不可见,最后被销毁。而当用户点击home键的时候,即表示退回到桌面,这时的Activity并不会被销毁,所以这里现实不可编辑,再是不可见,这时并不会调用onDestory方法被销毁,此时再点击进入该应用,会调用onRestart方法,不再是调用Activity,然后再是调用onStart,onResume。
下面是Activity的生命周期图:
Activity是android中四大组件之一,是最常见的应用组件,也是用的最多的组件,它能够提供一个界面与用户进行交互。Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate onDestory onStart onStop onResume onPause。这些方法都是两两对应的,onCreate-->创建与onDestory-->销毁;onStart-->可见与onStop-->不可见;onResume-->可编辑(焦点)和onPause-->未获得焦点。最后还有一个方法是onRestart,这个方法在什么时候调用呢?当Activity被onStop后,但是并没有onDestory,即并没有被销毁时,用户重新回到当前Activity时,就调用onRestart方法,这里就不再是调用onCreate方法了。
public class MainActivity extends ActionBarActivity {
private final static String TAG = "MainActivity";
@Override
// Activity被创建时调用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, "onCreate.......");
}
@Override
// 该状态用户可见,但是用户还不能与之进行交互
protected void onStart() {
super.onStart();
Log.e(TAG, "onStart.......");
}
@Override
// 该状态是Activity获得用户焦点,用户可以与之进行交互
protected void onResume() {
super.onResume();
Log.e(TAG, "onResume.......");
}
@Override
//与onResume对应,当Activity失去焦点时调用
protected void onPause() {
super.onPause();
Log.e(TAG, "onPause.......");
}
@Override
//与onStart对应,当Activity不可见时调用
protected void onStop() {
super.onStop();
Log.e(TAG, "onStop.......");
}
@Override
//与onCreate对应,当Activity被销毁时调用
protected void onDestroy() {
super.onDestroy();
Log.e(TAG, "onDestroy.......");
}
@Override
//Activity从后台重新回到前台调用
protected void onRestart() {
super.onRestart();
Log.e(TAG, "onRestart.......");
}
}
Activity的完整生命周期:oncreate-->onstart-->onresume-->onpause-->onstop-->ondestory。用户在点击返回键的时候,Activity会销毁,这时Activity先是不可编辑,再是不可见,最后被销毁。而当用户点击home键的时候,即表示退回到桌面,这时的Activity并不会被销毁,所以这里现实不可编辑,再是不可见,这时并不会调用onDestory方法被销毁,此时再点击进入该应用,会调用onRestart方法,不再是调用Activity,然后再是调用onStart,onResume。
下面是Activity的生命周期图:
相关文章推荐
- 彻底解决Android系统A-GPS搜不到卫星的问题!
- Android滑动解锁控件
- Android快速开发系列 10个常用工具类
- 搜索 录音功能 Android api
- Android之路-启程2:Android开发环境简介以及编写第一个应用程序“HelloWorld”
- android从通讯录中选择联系人并读取号码
- Android动画之补间动画
- Android开发时图片Bitmap序列化问题(How to fix a java.io.NotSerializableException: android.graphics.Bitmap)
- Android:onNewIntent()触发机制及注意事项
- android短信备份报 java.lang.IllegalArgumentException错误
- 手机通知功能Notification
- Android PackageManagerService流程详细分析(三)之PackageHandler
- Android异步消息机制Handler详解,源码剖析(API 23)
- 为AndroidStudio安装jd-intellij,反编译任意.jar .class
- Android studio 多渠道打包(超简洁版)
- Software Design Patterns on Android
- 异步加载AsyncTask小谈+实例
- Caused by: java.lang.ClassNotFoundException[android的终极解决错误]
- android编程实现系统图片剪裁的方法
- 【Android】【源码】如何阅读Android系统源码