资讯详情

【攻克Android (9)】Activity生命周期

[b][size=large]一、Activity生命周期[//size][/b] [size=medium][b]1. Activity(活动)[//b][/size] [size=medium]活动是 Android 应用框架中的核心组件在窗口(Window)绘制用户界面,响应用户交互。size] [size=medium][b]2. Activity生命周期[//b][/size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4111/685ec6ec-d126-34dd-bfec-a29461a45948.png[/img][/align] [size=medium]通常直接继承创建活动 Activity,并在子类中重写一系列回调方法;当活动状态发生变化时,这些方法由应用框架按特定顺序调用,称为活动的生命周期。size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4113/e20a3c4d-db97-354b-885d-bf7e1f344e06.png[/img][/align] [size=medium]根据活动的复杂性,生命周期中的所有方法可能都不需要实现,但您需要知道每种方法的功能,以确保您的应用程序能够像用户预期的那样执行:[/size] [size=medium][//size] [size=medium]用户离开应用一段时间后返回,进度不会丢失。size] [size=medium]当用户设备屏幕旋转时,不会丢失进度或崩溃[/size] [size=medium]GPS 或者不需要其他传感器时不要一直消耗电量。size] [size=medium]本周期按执行时间顺序可分为:[/size] [size=medium](1)完全生命周期[/size] [size=medium](2)可见生命周期[//)size] [size=medium](3)前台生命周期[/)size] [size=medium](1)完全生命周期[/size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4117/efbb4dba-f675-3df8-8f3e-fbfdb5203b53.png[/img][/align] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4119/b72c28e8-ba50-33c1-a106-26b5fe7bf2c5.png[/img][/align] [size=medium](2)可见生命周期[//)size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4121/fa865b7e-a5d3-3803-b24f-4d87b034f4ed.png[/img][/align] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4123/38aed2cc-2573-3e30-a226-b5c2d00d2e28.png[/img][/align] [size=medium](3)前台生命周期[/)size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4125/e387bba8-155e-3c14-807b-b9042cd7d991.png[/img][/align] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4127/2191159c-a232-3903-8367-f49d0776dde5.png[/img][/align] [size=medium][b]保存活动状态:[/b][/size] [size=medium]当系统内存不足时,系统将销毁暂停或停止的活动;当用户想要回到被销毁的活动时,系统将重新创建活动。此时,将回调以下方法:[/size] [size=medium]onSaveInstanceState(Bundle savedInstanceState)[/size] [size=medium]onRestoreInstanceState(Bundle savedInstanceState)[/size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4129/78faee4e-9682-3af0-a32e-6d3fa713afc8.png[/img][/align] [size=medium][b]3. 活动任务栈[/b][/size] [size=medium][b](1)[/b][/size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4131/6b6656a7-88fc-3960-a04e-f7345f55b628.png[/img][/align] [size=medium]一个应用程序通常包含多个活动。用户在不同的活动中执行不同的操作,但只有一个处于活跃状态:启动新活动,前者将停止并压入堆栈[/size] [size=medium][b](2)Task:任务[/b][/size] [align=center][img]http://dl2.iteye.com/upload/attachment/0111/1416/7a1f0ac8-c770-361d-82d3-a29f2bd47976.png[/img][/align] [size=medium]当我们需要一个的时候Activity另一个可以启动Activity,也许另一个Activity在不同的应用程序中定义Activity。[/size] [size=medium]Android通过这两个Activity保存在同一个Task实现这种用户体验。简单地说,一个Task是用户体验中的应用。 它将相关的Activity组合在一起,以stack的方式管理(就是前面提到的Activity Stack),这就是Task。[/size] [size=medium]每一个Task有自己的Activity栈(Activity Stack)。[/size] [size=medium][b] 4. 看手机Activity生命周期:[//b][/size] [size=medium]在 MainActivity 创建以下内容Activity生命周期中的方法(MainActivity 中右键 -> Generate -> Override Methods...):[/size] [align=center][img]http://dl2.iteye.com/upload/attachment/0110/4133/ba48c870-33f1-311d-8068-984ebfcee4cf.png[/img][/align]
 package com.xiangdong.lifecycle;   import android.app.Activity;   import android.os.Bundle;   import android.util.Log;   import android.view.Menu;   import android.view.MenuItem;   public class MainActivity extends Activity {       //创建标记常量       private static final String TAG = "MainActivity";       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           Log.v(TAG, "onCreate()");           setContentView(R.layout.activity_main);       }       @Override       protected void onStart() {           super.onStart();           Log.v(TAG, "onStart()");       }       @Override       protected void onResume() {           super.onResume();           Log.v(TAG, "onResume()");       }       @Override       protected void onRestart() {           super.onRestart();           Log.v(TAG, "onRestart()");       }       @Overrde       protected void onStop() {           super.onStop();           Log.v(TAG, "onStop()");       }       @Override       protected void onDestroy() {           super.onDestroy();           Log.v(TAG, "onDestroy()");       }       @Override       protected void onPause() {           super.onPause();           Log.v(TAG, "onPause()");       }       @Override       protected void onSaveInstanceState(Bundle outState) {           super.onSaveInstanceState(outState);           Log.v(TAG,"onSaveInstanceState()");       }       @Override       protected void onRestoreInstanceState(Bundle savedInstanceState) {           super.onRestoreInstanceState(savedInstanceState);           Log.v(TAG, "onRestoreInstanceState()");       }       //  以下代码不做更改------------------------------------------------------------------       @Override       public boolean onCreateOptionsMenu(Menu menu) {           // Inflate the menu; this adds items to the action bar if it is present.           getMenuInflater().inflate(R.menu.menu_main, menu);           return true;       }       @Override       public boolean onOptionsItemSelected(MenuItem item) {           // Handle action bar item clicks here. The action bar will           // automatically handle clicks on the Home/Up button, so long           // as you specify a parent activity in AndroidManifest.xml.           int id = item.getItemId();           //noinspection SimplifiableIfStatement           if (id == R.id.action_settings) {               return true;           }           return super.onOptionsItemSelected(item);       }   }
[size=medium]这些类中用到了Log日志输出。[/size] [size=medium]将项目部署到手机上,通过打开项目、退出项目等多种操作,可看到Activity生命周期的过程。[/size]

标签: e24f传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台