美文网首页
四、Activity

四、Activity

作者: 浮生若梦OvO | 来源:发表于2019-06-20 22:00 被阅读0次

一、android中的Activity组件

  • 如何开发多界面的应用:
    需要有 多个activity ,默认的情况下 每个acitivity 就是一个界面 ,每个activity 在创建的时候 , 需要 指定一个 界面 ( 这个界面 就是layout 文件夹 下 的 布局 文件 ),每个acitivity 在写好了之后 , 必须要 到 清单 文件中 进行 声明 , 这样系统 才可以找到 这个Acitivity. 否则 就会 抛异常 .
  • 由 一个界面 跳到 另外一个 界面的时候, 可以通过 intent (意图 ) 来实现
//显示意图

Intent intent=new Intent( );

intent.setClass(this,SecondActivity.class);

//启动intent

startActivity( intent);
  • 一个程序多个入口,要在清单文件中配置多个Main和LAUNCHER:

a、正常情况

image.png

b、多入口情况

image.png
  • 人品计算器中的一些注意事项
    a、finsh( );方法的使用 ,能够结束程序,退回到手机的主界面 。
    b、获取sex数据的方法


    image.png

    c、intent携带参数


    image.png
    d、获取intent携带的参数
    image.png

二、intent意图

Intent : 意图 用来 描述 你的 代码 具体想做什么,是Android 中 激活组件的一个 纽带 .

Intent 分类 两大类 :

  • 显式 意图 ---- 明确的 告诉要 激活什么样的组件 ---- 最终激活就只有那么一个组件

  • 隐式意图 ---- 没有明确告诉到底想激活哪个组件 ----- 可以 有 多个 能够 被 激活的 组件显示出来 .
    注意:显式 意图 一般用在应用程序 内部。

a、显示意图


image.png

清单中的配置代码:


image.png
b、隐式意图(要配置intent-filter意图过滤器)
image.png

同时还需要在清单文件中配置 action和category:


image.png

三、激活系统浏览器

注:要将系统浏览器,清单文件中的

/*     <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />

    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="http" />

    <data android:scheme="https" />

    <data android:scheme="about" />

    <data android:scheme="javascript" />*/

这些代码,在意图对象中设置。

image.png

四、一键短息分享

image.png

五、短息助手

当启动 activity 还为了 拿到 结果的时候 , 应该 调用StartActivityForResult(); 结合 setResult()和onActivityResult();这个方法StartActivityForResult()会在结束时调用onActivityResult()方法去接收反回的结果。


image.png

六、activity的生命周期

1、执行顺序:

image.png

2、横竖屏切换时的生命周期:

默认的情况下, 当横竖屏切换的时候 , activity会被销毁, 然后 重新再次创建 .但是 你明确告诉了 不要 因为 横竖屏 切换 而去影响到 activity的生命周期。

例如, 在播放视频的时候 , 本来是竖直的, 现在横屏了 , 那么 应该 继续 播放, 那么这个时候 就要明确的 不要重新创建activity .

这可以通过 清单文件里的配置来实现

两种实现方式:

  1. 配置 只能 横屏(landscape), 或者只能竖屏(portrait );
image.png
  1. 配置 横竖屏切换 , 不受 影响
image.png

七、Activity的启动模式

任务栈

task 和 stack

  • task --任务

一个应用程序可以拥有多个activity,每一个activity就是用来处理用户交互之间的任务。

  • stack ---栈

就是用来记录用户打开了哪些界面,拥有哪些任务。如果一个stack中的任务已经全部清除了,那么代表这个应用程序就退出了。一旦哪一个界面执行了销毁的动作,实际上就是执行了出栈的动作。

栈 是一种数据结构 遵循后进先出的规则 队列(Queue) 也是一种数据结构 遵循先进先出的规则

Activity的启动模式

  • standard

默认的启动模式 , 启动多少次界面,就会有多少个界面的实例被压到栈中。

  • singleTop

单一顶部模式 , 如果当前界面的实例位于栈顶,那么将不会再创建该实例压入栈中,而是重用当前栈顶的实例。只要不是为与栈顶,就与默认的启动模式一样。

应用场景: 一般是用来避免出现一些奇怪的现象。 短信的编写界面使用这个模式

  • singleTask

单一任务模式 , 如果要启动的界面实例已经位于栈中,那么这个时候讲重用以前的实例,并且把该实例与栈顶之间的其他界面实例全部移除。相当于是直接让以前的实例位于栈顶。 如果当前界面位于栈顶,那么也不会再次创建实例。

应用场景: 如果哪一个界面比较消耗内存和CPU的开销,那么久做成singleTask的启动模式 , 浏览器的界面使用的是这个模式。

  • singleInstance

全局唯一模式 , 启动的界面会存放在单独的一个任务栈中,这个栈里面有且只能有它自己一个实例,以后还想启动这个界面,只需要切换显示不同的任务栈即可。不会再次创建这个界面的实例。

应用场景: 如果一个界面,单位时间内需要创建的实例很多,那么可以做成singleInstance . 来电的界面使用的就是这个启动模式。

相关文章

网友评论

      本文标题:四、Activity

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