最近受女票大人之邀要做一个 android app,:- (, 鉴于已经很久没碰过 android ,加上以前写过系列的 android 学习笔记,这里总结下来,权当复习回顾,如果能帮助刚开始学 android 的童鞋就太好了,有误的地方砖家们快给我头上拍一下

Android Activity

关于

每一个activity作为application展现给用户的一个交互界面,应用由多个交互界面组成,那么就可能需要多个activity。

每个activity的交互界面通过ViewGroup组成,activity 之间的通信通过 Intent(动作和动作对应的数据)。 从一个交互界面跳转到另外一个交互界面相当于一个activity跳转到另外一个activity。这个动作携带的数据由Intent来描述。

每一个应用都有一个主界面对应一个 main activity 且每一个activity都需要在manifest中注册才能被使用, 对应到 AndroidManifest.xml

                              

sample activity

 public class MyActivity entends Activity {    private MyApplication app;    @Override     public void onCreate(Bundle saveInstanceState) {        super.onCreate(saveInstanceState);        setContentView(R.layout.main);    } }

activity stack

activity的状态由activity 在 activity stack中的位置决定,last-in-first-out的策略
应用的优先级是由activity stack中最高优先级的activity来决定的。

activity 状态

  1. active

    • 栈顶得activity

  2. pause

    • 可见但是没有focus的activity

  3. stopped

    • 不可见的activity

  4. inactive

    • kill掉的activity

生命周期

active lifetime

 onResume -> onSaveInstanceState -> onPause -< onRestart

visible lifetime

 onStart -> [active life] -> onStop(killble) -> onRestart -<

full lifetime

 onCreate -> (stopped? onRestoreInstanceState:pass) -> [visible lifetime] -> onDestroy[killable] -<

重一个activity 回退到另外一个activity的时候,为了保证用户的UI 的状态, activity应该监听这些状态做到数据和UI的保存。

  1. onRestoreInstanceState(Bundle savedInstaceState)

    • 只有当activity曾经被kill过才会调用

    • 先调用onCreate 从savedInstanceSate中恢复UI状态

life cycle sample

有3个Acitivity: 分别用One(main), Two(透明的), Three(全屏)

    打开应用:        onCreate(One)        onStart(One)        onResume(one)    打开 activity Two:        onPause(One)        onCreate(Two)        onStart(Two)        onResume(Two)    返回:        onPause(Two)        onActivityResult(One)        onResume(One)        onStop(Two)        onDestroy(Two)    打开 activity three:        onPause(One)        onCreate(Three)        onStart(Three)        onResume(Three)        onStop(One)    返回:        onPause(Three)        onActivityResult(One)        onRestart(One)        onStart(One)        onResume(One)        onStop(Three)         onDestroy(Three) // killed three    返回:        onPause(One)        onStop(One)        onDestroy(One)
    // 横屏切换的生命周期    打开应用:        onCreate()        onStart()        onResume()    横屏:        onSaveInstanceState()        onPause()        onStop()        onDestroy()        onCreate()        onStart()        onRestoreInstanceState()        onResume()     竖屏:       两次横屏log结果     // 如果设置了 android:configChanges="orientation"    横屏:        onSaveInstanceState()        onPause()        onStop()        onDestroy()        onCreate()        onStart    竖屏:        一次横屏log结果
  1. 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

  2. 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

  3. 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

  4. 当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变

  5. Activity运行时按下HOME键(跟被完全覆盖是一样的):onSaveInstanceState --> onPause--> onStop,再次进入激活状态时: onRestart -->onStart--->onResume (在visible 周期)

Activity的系统子类

  1. ListActivity

  2. MapActivity

  3. ExpandableListActivity

ActivityManager

Activity 继承自 Context

更多相关文章

  1. Android四大基本组件介绍与生命周期
  2. Android小心有坑之网络状态监听
  3. Android(安卓)如何在关于手机界面添加个图片
  4. android笔记
  5. Android之Activity生命周期总结(一)
  6. Android 界面设计工具 DroidDraw
  7. Android中切换屏幕方向时Activity生命周期函数执行情况分析
  8. Android界面布局
  9. 刚刚接触Android,写第一个Hello world 小项目笔记

随机推荐

  1. Android Dialog的7种形式
  2. 实时Android语音对讲系统架构
  3. 我想给你们介绍一个与众不同的Android微
  4. Android(安卓)Camera开发(一)之基础知识
  5. android中的异步,AsyncTask,HandlerThread
  6. Android学习笔记の五
  7. Android 中Popwindow弹出菜单的两种方法
  8. [置顶] 我的Android进阶之旅------>Andro
  9. 横竖屏切换时候activity的生命周期
  10. Android(安卓)Studio3.1.2 新创建项目出