| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android学习笔记——第一章 Activity与intent -> 正文阅读 |
|
[移动开发]Android学习笔记——第一章 Activity与intent |
一、活动(Activity)与intent1.1 活动(activity)是什么?Activity活动存在于android中,是所有程序的根本,流程都运行在Activity之中,Activity是Android当中最基本的模块之一。主要用于和用户进行交互。 1.2 intent在活动之间穿梭intent为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。一般可被用于启动活动、启动服务以及发送广播等场景。 1.2.1 显示intentIntent有多个构造函数的重载,其中一个是intent(context packagecontext, class<?>cls)。 Activity类提供了一个**startactivity()**方法来给我们使用intent,这个方法是专门用于启动活动的,其接收一个intent参数。
像这种“意图”非常明显想去到哪个活动的方式称之为显示intent。 1.2.2 隐式intent相比于显示intent,隐式则不明显,它并不明确指出我们想要启动哪个活动,而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个intent,并帮我们找出合适的活动去启动。 androidmanifest.xml文件在要跳转的活动编写
Mainactivity文件
Action指明当前活动可以响应对应的name,category则包含一些附加信息,更精确地指明了当前的活动能够响应的intent还可能带有category。 1.2.3 隐式intent更多用法隐式intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使的android多个应用程序之间的功能共享成为可能。
首先指定了intent的action为Intent.ACTION_VIEW,是一个android系统内置的动作,其常量值为android.intent.action.VIEW。 < data>主要可以配置以下内容: 只有< data>中指定的内容和intent中携带的data完全一样时,当前活动才能够响应该intent;不过一般在< data>中都可以指定过多的内容。
其中,Intent.ACTION_CALL是一个android系统的内置动作,data部分指定链协议是tel。 1.3 intent传递数据给下一个活动Intent除了可以启动活动外,还可以在启动活动时传递数据给下一个活动。 在第一个活动的按钮点击事件中添加代码:
在下一个活动中取出传递的数据:
1.4 intent返回数据给上一个活动Intent可以传递数据当然也可以返回数据。不同的是,返回到上一个活动只需要按一下手机的back键就可以,并没有一个用于启动活动intent来传递数据。 实例: 在第一个活动按钮的点击事件添加代码:
在第二个活动按钮的点击事件(返回数据)添加代码:
当返回上一个活动时,当前活动被销毁后会调用上一个活动的onActivityResult()方法,需要在上一个活动中重写方法得到返回的数据。
在第二个活动如果用户表示通过点击按钮返回到上一个活动,而是通过按下手机的back键,数据是没有办法传输的,需要我们在第二个活动中重写onBackPressed()方法来解决:
1.5 活动(activity)的生命周期一个APP,会有很多的活动,活动之间经常要进行切换,数据的交互等,这时候就需要用到生命周期这块的知识。只要抓握了活动的生命周期,才能更流畅的写APP程序出来。 1.5.1 返回栈Android中的活动是可以层叠的。每启动一个新的活动,就会覆盖在原活动之上, 点击手机back键会销毁最上面的活动,前一个活动就会重新显示出来。 如图所示,返回栈是如何管理活动入栈出栈操作的。 1.5.2 活动状态(四种:运行、暂停、停止、销毁状态)每个活动在生命周期中最多可能会有4种状态。
当一个活动位于返回栈的栈顶时,这是活动就处于运行状态。系统最不愿意回收就是处于运行状态的活动,因为这会带来非常差的用户体验。
当一个活动不再处于栈顶位置,但仍然可见时,说明活动进入暂停状态。
当活动不再处于栈顶位置,并且完全不可见时,就进入停止状态。
当活动从返回栈中移除后就变成了销毁状态,系统会最倾向于回收处于这种状态的活动,从而保证设计的内存充足。 1.5.3 活动的生存期Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节。 onCreate():此方法会在活动第一次被创建的时候被调用,要在方法中完成活动的初始化操作,比如:加载布局、绑定事件等。 onStart():此方法在活动由不可见变为可见时调用。 onResume():此方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。 onPause():此方法在系统准备去启动或者恢复另一个活动时调用。通常会在方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。 onStop():此方法在活动完全不可见时调用。跟onPause()方法的主要区别在于:启动的新活动时一个对话框式的活动,那么onPause()方法会得到执行,onStop()方法并不会执行。 onDestory():此方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。 onRestart():此方法在活动由停止状态变为运行状态之前调用,也就是活动被重启动了。 7个方法中处理onRestart()方法,其他都是两两相对的,从而又可以将活动分为3种生存期。 完整生存期:活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。一般情况,一个活动会在onCreate()方法中完成各种初始化操作,而在onDestroy()方法中完成是否内存的操作。 可见生存期:活动在onStart()方法和onStop()方法之间所尽力的,就是可见生存期。 前台生存期:活动在onResume()方法和onPause()方法之间所经历的就是前台生存期。 1.5.4 实例活动的生命声明周期略,可调用7个活动进行log日志查看他们的活动。 1.6 活动的启动模式在实际项目中应该根据特定的需求为每个互动指定恰当的启动模式。 1.6.1 standardStandard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用standard启动模式。 1.6.2 singleTop当活动的启动模式指定为singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。 1.6.3 singleTask当活动的启动模式指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。 1.6.4 singleInstance此模式是4种启动模式中最特殊也最复杂的一个,指定为singleInstance模式的互动会启用一个新的返回栈来管理活动(singleTask模式指定不同的taskAffinity,也会启动一个新的返回栈)。 1.7 活动的最佳实践知识点少,但是运用的技巧却许许多多,下面介绍一下几种实践技巧。 1.7.1 知道当前的活动是哪个?Log.d(“当前活动:”,getClass().getSimpleName()); 1.7.2 退出程序想随时随地退出程序和所有的进程,可以做一个注销或者退出功能。
在MainActivity中的onCreate方法中添加:
在MainActivity中新创建onDestroy()方法:
做完之后,想在哪个活动直接退出程序,可以直接调用Appout类中的outActivityAll()方法即可。
为了保证程序完全退出,可以写一个杀掉进程的代码:
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:56:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |