美文网首页
一、Activity详解

一、Activity详解

作者: 飞天_shine | 来源:发表于2018-11-27 22:03 被阅读0次

    一、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原生页面

    相关文章

      网友评论

          本文标题:一、Activity详解

          本文链接:https://www.haomeiwen.com/subject/vxznqqtx.html