Android四大组件 Activity

Activity是一个Android的应用组件,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满屏幕也可以小于屏幕并浮动在其他窗口之上。

一.activity生命周期

1.activity的四种状态

running:活动状态,点击屏幕会相应

paused:失去焦点或被非全屏activity占据,或被透明的activity放置在栈顶。但只是失去了和用户交互的能力,并不是说activity被销毁了。若内存紧张,则被回收。

stopped:这个activity被另一个activity完全覆盖的时候,不可见,在后台运行。内存若不紧张 ,则内存状态信息,成员变量还在。

killed:activity被系统回收了。

 

2.activity生命周期

activity启动->onCreate()创建,数据加载等->onStart()正在启动,用户可见,不能交互->onResume()在前台可见及交互

点击Home键回到主界面(Activity不可见)->onPause()->onStop()

当我们再次回到原activity时->onRestart()->onStart()->onResume()

退出当前activity时->onPause()->onStop()->onDestroy()生命周期最后一个方法,回收工作及资源释放等。

 

3.android进程优先级

前台:与用户交互的activity或与前台绑定的service

可见:可见但不能点击

服务:后台service服务

后台:比如前台进程按了Home键

空:缓存目的保留

 

二.Android任务栈

如果应用不存在任务(应用最近未曾使用),则会创建一个新任务,并且该应用的“主”Activity 将作为堆栈中的根 Activity 打开。

当前 Activity 启动另一个 Activity 时,该新 Activity 会被推送到堆栈顶部,成为焦点所在。 前一个 Activity 仍保留在堆栈中,但是处于停止状态。Activity 停止时,系统会保持其用户界面的当前状态。 用户按“返回”按钮时,当前 Activity 会从堆栈顶部弹出(Activity 被销毁),而前一个 Activity 恢复执行(恢复其 UI 的前一状态)。 堆栈中的 Activity 永远不会重新排列,仅推入和弹出堆栈:由当前 Activity 启动时推入堆栈;用户使用“返回”按钮退出时弹出堆栈。 因此,返回栈以“后进先出”对象结构运行。

三.activity启动模式

1.standard:每次启动都会重新创建activity实例,并加到任务栈(task)中,不会考虑之前是否存在,不会复用。消耗内存资源

2.singletop:(栈顶复用)若在栈顶,则不重新创建

3.singletask:(栈内复用模式)看整个任务栈中是否存在当前需要启动的activity,若存在,则直接将activity置与栈顶。这个以上的activity就都移除了,销毁。

4.singleinstance:activity在系统中有并只有一个实例,activity独享任务栈。较少用。

 

四.scheme跳转协议

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

协议格式

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

qh代表Scheme协议名称

test代表Scheme作用的地址域

8080代表改路径的端口号

/goods代表的是指定页面(路径)

goodsId和name代表传递的两个参数

 

Scheme使用

 

定义一个Scheme

<activity android:name=".SchemeActivity">
            <!-- 给页面添加指定的过滤器-->
            <intent-filter>
                 <!--该页面的路径配置-->
                <data
                    android:host="test"
                    android:path="/goods"
                    android:port="8080"
                    android:scheme="qh"/>
                <!--下面这几行也必须得设置-->
                <category android:name="android.intent.category.DEFAULT"/>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            </intent-filter>
        </activity>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值