一、Activity详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32673327/article/details/84581864

一、Activity的生命周期

1. activity的四种状态

  • running activity可以活动 用户可以点击 处于栈顶的位置
  • pause 失去焦点 被acitvity窗口覆盖 ,或者是透明activity处于栈顶位置 失去和用户的交互 内存紧张会被回收
  • stoped 被完全覆盖 内存紧张会被回收
  • killed 被系统回收掉

2. activity的生命周期

  • 启动 oncreate -->onStart-->onResume 
    • onStart--用户可见 但是用户不能进行交互
    • onResume--用户可见 可以进行交互
  • onpause --->onStop 点击home返回主界面 
    • onpause--处于停止状态,用户不可见,内存紧张会被回收
    • onStop ----完全覆盖,内存紧张会被回收
  • 再次回到原activity onreStart->onStart->onResume
  • 退出onPause->onStop->onDestroy

3.android中进程优先级

  • 前台
  • 可见
  • 服务 (service)
  • 后台 (不可见的状态)

4.activity状态保存

为什么平时并没有实现onSaveInstanceState()和onRestoreInstanceState()方法,但是有些时候,Activity中的UI状态依然得到了保存,是为什么?

 在Android中,Activity类的onSaveInstanceState()方法默认实现会调用布局中每个View的onSaveInstanceState()方法去保存其本身的状态信息,Android框架中几乎每个控件都会实现这个方法。我们只需要为想要保存其状态的每个控件提供一个唯一的ID(在xml中设置 android:id属性),如果控件没有 ID,则系统无法保存其状态。
 
我们可以通过将View的android:saveEnabled属性设置为false或通过调用View的setSaveEnabled()方法显式阻止布局内的视图保存其状态,通常不需要设置这些属性,但如果想以不同方式恢复Activity UI的状态,可以这样做。

二、android中的任务栈 和activity的启动模式

1.standard

  • 标准的跳转方式,可以复用activity,为了避免重新创建消耗内存资源

2.singletop

  • 栈顶复用模式,如果创建的activity在栈顶,就不会重新创建,复用栈顶

3.singletask

  • 栈内复用模式,单例模式,当前栈中有此activity,就会放在栈顶,并且将它之上的activity进行移除,此时会回调onNewIntent方法

3.singleinstance 
- 栈中有且仅有一个实例


三、scheme跳转协议

Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。

-- Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck")

  • 服务器可以定制化跳转app页面
  • app可以通过Scheme跳转到另一个app页面
  • 可以通过h5页面跳转app原生页面

猜你喜欢

转载自blog.csdn.net/qq_32673327/article/details/84581864