Activity简述


Activity是Android应用中负责与用户交互的组件。在应用中创建自己的Activity需要继承Activity或者继承Activity的


子类。


[java] view plain copy
  1. publicclassTestActivityextendsActivity{
  2. }


Activity的使用


从图1.1可以看出Activity间接继承了ContextThemeWrapper、ContextWrapper、Context、Object这些基类,因此


Activity可以直接调用它们的方法。当然只是继承Activity是没有任何意义的,我们还需要实现Activity的一个或多个方


法。


图1.1


在平时开发中最常用到的是onCreate(Bundle savedInstanceState)方法,此方法在Activity创建时被回调,我们可


以通过setContentView方法的加载需要显示的视图。在Activity中提供了三个setContentView方法,见图1.2


图1.2

(1)public voidsetContentView(intlayoutResID):从资源文件中加载布局ID


(2)public voidsetContentView(View view):加载一个视图到Activity中。


(3)public voidsetContentView(View view, ViewGroup.LayoutParams params):加载一个指定的视图到Activity


中,并通过params设置布局参数。


创建完我们需要的Activity后,还需要在AndroidMainfest.xml中进行配置。


[html] view plain copy
  1. <activityandroid:name="com.example.TestActivity">

当自己的Activity创建完毕后,我们需要启动或者进行销毁,Activity的启动可以使用以下两个方法:


(1)publicvoidstartActivity(Intent intent):启动Activity。


(2)publicvoidstartActivityForResult(Intent intent,intrequestCode):以指定的请求码requestCode启动Activity,


当启动的Activity返回时,可以通过onActivityResult(intrequestCode,intresultCode, Intent data)方法获取结果。


销毁Activity可以使用以下方法:


(1)publicvoidfinish():结束当前Activity。


(2)publicvoidfinishActivity(intrequestCode):结束以startActivityForResult(Intentintent,intrequestCode)方法启


动的Activity。



Activity之间的数据传递


当我们从一个Activity启动另一个Activity时,需要将一些数据传递过去,这时我们就需要使用Intent,可以使用


Intent提供的多个重载的putExtra方法来进行传递,见图1.3



图1.3



从图1.3可以看出,通过Intent可以传递的数据类型多种多样,相应的可以通过图1.4中的方法调用Intent的get方法,获


取相应的数据。



图1.4



Activity的生命周期


从Activity创建到销毁,Activity的状态大致可以分为以下四类:


(1)活动状态:当前的Activity位于前台,用户可见,可以获得焦点。


(2)暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。


(3)停止状态:该Activity不可见,失去焦点。


(4)销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。


Activity的生命周期请参看图1.5所示:




图1.5




[java] view plain copy
  1. publicclassActivityextendsApplicationContext{
  2. protectedvoidonCreate(BundlesavedInstanceState);
  3. protectedvoidonStart();
  4. protectedvoidonRestart();
  5. protectedvoidonResume();
  6. protectedvoidonPause();
  7. protectedvoidonStop();
  8. protectedvoidonDestroy();
  9. }

onCreate(BundlesavedInstanceState):创建Activity时被回调。该方法只会被调用一次。


onStart():启动Activity时被回调。


onRestart():重新启动Activity时被回调。


onResume():恢复Activity时被回调,onStart()方法后一定会回调onResume()方法。


onPause():暂停Activity时被回调。


onStop():停止Activity时被回调。


onDestroy():销毁Activity时被回调。该方法只会被调用一次。

从图1.5可以得出,一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart-> onResume。


在Activity被干掉的时候顺序是onPause-> onStop -> onDestroy ,这样就是一个完整的生命周期。


如果中止的时候新出的一个Activity是全屏时的调用顺序是onPause->onStop,恢复的时候onStart->onResume。


如果打断 这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候


onResume 。



图1.6


从图1.6可以看出, onPause,onstop, onDestroy,三种状态 下 activity都有可能被系统干掉,为了保证程序的正


确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库 )。看看


官网给出的例子:


[java] view plain copy
  1. publicclassCalendarActivityextendsActivity{
  2. ...
  3. staticfinalintDAY_VIEW_MODE=0;
  4. staticfinalintWEEK_VIEW_MODE=1;
  5. privateSharedPreferencesmPrefs;
  6. privateintmCurViewMode;
  7. protectedvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. SharedPreferencesmPrefs=getSharedPreferences();
  10. mCurViewMode=mPrefs.getInt("view_mode",DAY_VIEW_MODE);
  11. }
  12. protectedvoidonPause(){
  13. super.onPause();
  14. SharedPreferences.Editored=mPrefs.edit();
  15. ed.putInt("view_mode",mCurViewMode);
  16. ed.commit();
  17. }
  18. }

在onPause()中使用SharedPreferences.Editor进行写入,在onCreate(Bundle savedInstanceState)中进行读取。



-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/47315083情绪控

更多相关文章

  1. Android(安卓)C++中调用java
  2. android singleTask使用情况,场景分析
  3. android UiAutomator利用am命令启动和结束进程
  4. [Android]AndroidBucket增加碎片SubLayout功能及AISubLayout的注
  5. Android中SharedPreferences使用方法介绍
  6. android EditText监听事件处理方法
  7. [Android] Android(安卓)sqlite事务
  8. Android(安卓)Http请求方法汇总
  9. Android启动找不到activity问题

随机推荐

  1. android扫描二维码(zxing)附带小例子
  2. Android上实现柱状图表
  3. Android(安卓)OpenGLES2.0(十三)——流畅的
  4. android gravity用法,我老是记不住
  5. 从零开始--系统深入学习android(实践-让我
  6. 包建强的培训课程(9):Android App性能优化
  7. Android(安卓)进阶之了解源码——Activit
  8. Android通过WebView与JS交互的全面方式
  9. Android构建系统和Gradle知识整理
  10. Android中使用Handler机制更新UI的三种解