首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AndroidStdio1_5

在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...既然可以传递数据给下一个活动,那么能不能够返回数据给上一个活动呢?答案是肯定的。 不过不同的是,返回上一个活动只需要按一下Back键就可以了,并没有一个用于启动活动的Intent来传递数据。...这里使用了startActivityForResult()方法来启动SecondActivity,请求码只要是一个唯一值就可以了,这里传入了1。...栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。...这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。

62830

Activity详解

当然从流程图,我们也可以看出当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,因此我们也可以在onResume方法中初始化一些资源,比如重新初始化在...但通过流程图我们还可以看到一种情况是onPause方法执行后直接执行了onResume方法,这属于比较极端的现象了,这可能是用户操作使当前Activity退居后台后又迅速地再回到到当前的Activity...当然,在onPause方法中我们可以做一些数据存储或者动画停止或者资源回收的操作,但是不能太耗时,因为这可能会影响到新的Activity的显示——onPause方法执行完成后,新Activity的onResume...前台生存期:活动在onResume()方法和onPause()方法之间所经历的,这个生存期内,活动总是处于运行状态,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也是这个状态下的活动。...通过handler来进行消息的发送,系统内部会将每一个activity组件使用ActivityClientRecord对象来进行描述,而ActivityClientRecord对象中保存有一个LoaderApk

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    startActivityForResult被标记为弃用后,如何优雅的启动Activity?

    可以明显的看到,在androidx.activity1.2.0-alpha04时开始,Android中这位你调用过无数次的startActivityForResult和onActivityResult,...ActivityResultCallback 通过名字就可以了解到这是启动Activity并返回到当前Activity时的结果回调。...拍照并保存 保存文件的Uri 是否保存成功 TakePicturePreview 通过MediaStore.ACTION_IMAGE_CAPTURE拍照 null(Void) 图片的Bitmap CaptureVideo...) 保存文件的Uri 是否保存成功。...虽然Activity Result API非常强大与便捷,但在国内各厂商深度定制系统的情况下,权限申请操作一般我们还是会使用到第三方框架,拍照、视频录制大部分情况使用系统界面操作肯定也不适用。

    3.2K20

    再看Android官方文档之Activity&Intent

    重新创建 onSaveInstanceState 被系统用来恢复之前状态而保存的数据被叫做 “instance state” ,它是一些存放在Bundle对象中的key-value pairs。...为了显示chooser, 需要使用createChooser()来创建Intent,这样就可以列出可以响应createChooser()中Intent的app,并且指定了标题。...接收Activity返回的结果 在执行startActivityForResult()时,可以使用explicit 或者 implicit 的intent。...当其他app使用implicit intent执行 startActivity() 或者 startActivityForResult()时,系统会自动查找出那些可以响应该intent的activity...返回Result时默认的result code是RESULT_CANCELED.因此,如果用户在没有完成操作之前点击了back key,那么之前的activity接受到的result code就是”canceled

    55960

    【Android从零单排系列三十五】《Android四大组件——Activity》

    前言 小伙伴们,在之前的系列文章我们分别介绍了Android视图组件及布局相关的内容,从本文开始我们继续盘点介绍Android开发中另一个比较重要的内容,Android四大组件,第一个 Activity...生命周期回调和状态保存:在Activity的生命周期中,可以进行一些相关操作,例如在onPause()时保存数据,在onCreate()或onRestoreInstanceState()时恢复数据等。...使用startActivity()方法或startActivityForResult()方法启动目标Activity。 数据传递和返回:通过Intent可以在不同的Activity之间传递数据。...生命周期管理:根据需要,可以重写Activity的生命周期方法来执行初始化、资源释放、数据保存等操作。确保在合适的时机处理相关逻辑。...onResume():在Activity变得可见并能够与用户交互之前调用,此时Activity位于前台并获得了焦点。在这个阶段,Activity处于活动状态,可以响应用户的输入事件。

    22610

    安卓应用安全指南 4.1.2 创建使用活动 规则书

    的启动模式,并且在某些情况下可能会生成新任务。...请参阅“3.2 仔细和安全地处理输入数据” 4.1.2.6 在验证签名权限由内部应用定义之后,使用内部定义的签名权限(必需) 确保在创建活动时,通过定义内部签名权限来保护您的内部活动。...当公共活动用于返回数据时,目标可能会成为恶意软件,在这种情况下,可能会以恶意方式使用该信息。 对于私有和内部活动,不需要过多担心返回的数据被恶意使用,因为它们被返回到您控制的应用。...更多信息,请参阅“3.2 仔细和安全地处理输入数据”。 4.1.2.10 如果与其他公司的应用链接,请验证目标活动(必需) 与其他公司的应用链接时,确保确定了白名单。...您可以通过在应用内保存公司的证书散列副本,并使用目标应用的证书散列来检查它。 这将防止恶意应用欺骗意图。 具体实现方法请参考示例代码“4.1.1.3 创建/使用伙伴活动”部分。

    1.3K20

    Android 蓝牙4.0代码解析

    和setResult方法,Intent的使用 : 【已解决】Android的蓝牙实例代码中找不到REQUEST_ENABLE_BT  看完下面的内容就理解这儿了。...上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。...setResult(int resultCode, Intent data) 调用这个方法把Activity想要返回的数据返回到父Activity 第一个参数:当Activity结束时resultCode...总结:旧窗体通过startActivityForResult(intent, requestCode)方法的requestCode来标识信息(intent中)传给2个不同的新窗体,信息在新窗体中显示;新窗体在自己的窗体类中用...()->startService()->onDestroy()】,注意其中没有onStart(),主要是被onStartCommand()方法给取代了,onStart方法不推荐使用了。

    1.1K50

    原来一个App是这样启动起来的,一看就懂

    当然我们自己也可以去编写Launcher,运行在手机上使用自己的桌面风格,当然这里我们不去讲如何去编写一个Launcher,如果你感兴趣欢迎关注我。...5.微信启动后告诉AMS,启动好了 6.AMS通过之前的记录找出微信的首页,告诉微信应该启动哪个页面 7.微信按照AMS通知的页面去启动就启动成功了。 上述阶段是微信和AMS的交互过程。...,关于什么是代理模式以及动态代理和静态代理的使用可以持续关注我,后面会单独写篇文章进行介绍。...这个时候AMS根据之前的记录告诉微信应该启动哪个Activity,微信就可以启动了。...跳转到ActivityB,我们可以将Activity看作Launcher,唯一不同的就是,在正常情况下ActivityB和ActivityA所在同一进程,所以不会去创建新的进程。

    59430

    Fragment全解析系列(一):那些年踩过的坑

    Activity等情况下,系统会调用onSaveInstanceState()帮你保存当前Activity的状态、数据等,直到再回到该Activity之前(onResume()之前),你执行Fragment...(在此次离开时恰巧Activity被强杀时) 2、在重新回到该Activity的时候(onResumeFragments()或onPostResume()),再执行该事务,配合数据保存,可以做到事务的完整性...如果你add()了几个Fragment,使用show()、hide()方法控制,比如微信、QQ的底部tab等情景,如果你什么都不做的话,在“内存重启”后回到前台,app的这几个Fragment界面会重叠...附:startActivityForResult接收返回问题 在support 23.2.0以下的支持库中,对于在嵌套子Fragment的startActivityForResult (...库中,已经修复了该问题,嵌套的子Fragment也能正常接收到返回数据了!

    3.2K20

    Android基础总结(2)——活动Activity

    在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以将我们想要的数据暂存在Intent中,启动另一个活动后,只需要将这些数据取出就可以了。    ...如果要返回数据给上一个活动,则用startActivityForResult()方法来启动费另一个活动,该方法接收两个参数,第一个是Intent,第二个是请求码,用于在之后的回调中判断数据的来源,该请求码只要是一个唯一值就可以了...onSaveInstanceState是用来保存UI状态的,你可以使用它保存你所想保存的东西,在Activity杀死之前,它一般在onStop或者onPause之前触发,onRestoreInstanceState...则是在onResume之前触发回复状态,至于复写这个方法后onCreate方法是否会被调用。...因为在这种情况下,用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。

    1.2K90

    APP启动流程解析

    当然我们自己也可以去编写Launcher,运行在手机上使用自己的桌面风格,当然这里我们不去讲如何去编写一个Launcher,如果你感兴趣欢迎关注我。...5.微信启动后告诉AMS,启动好了 6.AMS通过之前的记录找出微信的首页,告诉微信应该启动哪个页面 7.微信按照AMS通知的页面去启动就启动成功了。 ? 上述阶段是微信和AMS的交互过程。...,关于什么是代理模式以及动态代理和静态代理的使用可以持续关注我,后面会单独写篇文章进行介绍。...这个时候AMS根据之前的记录告诉微信应该启动哪个Activity,微信就可以启动了。...内部是如何页面跳转的呢,比如我们从ActivityA跳转到ActivityB,我们可以将Activity看作Launcher,唯一不同的就是,在正常情况下ActivityB和ActivityA所在同一进程

    1.2K30

    安卓入门-第二章-探究活动

    比如说我在自己定义的活动中加入:,那么当其他软件点击了一个网站触发,那么就会询问是否使用自己之前所定义的活动。...在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...我们可以浅显地认为一个任务的数据结构体现就是一个栈,不同的任务由不同的栈。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。...我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。 onStop():这个方法在活动完全不可见的时候调用。...对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

    3K20

    利用startActivityForResult返回数据到前一个Activity(附源码+解析)

    在Android里面,从一个Activity跳转到另一个Activity、再返回,前一个Activity默认是能够保存数据和状态的。...但这次我想通过利用startActivityForResult达到相同的目的,虽然看起来变复杂了,但可以探索下startActivityForResult背后的原理和使用注意事项。...在Activity B中添加一个“回到上一页”的Button,返回到Activity A之后,需要保留之前输入的相关信息,我们用startActivityForResult来拉起Activity B,这样...具体步骤如下: 在Activity A中有一个Button,点击Button后,获取要传到Activity B的数据,将数据封装到Bundle中,再调用startActivityForResult将数据传到...Activity B Activity A 重写onActivityResult函数,判断requestCode和resultCode是否是我们预期的结果,如果是,那么从Bundle中获取数据,重新显示在

    2K20

    【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    () : 被用户可见之前调用 , 调用之后进入暂停状态 , 如果不满足条件我们不想让用户进入应用 , 可以在这里进行限制 , finish掉该Activity; onResume() : 在与用户交互之前调用..., 调用之后进入激活状态; onPause() : 激活另一个Activity时调用 , 调用之后进入暂停状态 , 界面可见 , 失去焦点; 该操作用来保存当前Activity数据; onStop()...Intent传递参数的方式 intent传递参数有两种方式 :  注意 : 在onCreate()方法中创建Intent的时候 , 上下文参数不能使用this , 要使用getApplicationContext...Activity获取数据 在Activity中想要取出跳转之前放入的数据 , 调用Activity的getIntent()方法 , 获取Intent对象 , 在调用Intent对象的方法获取数据; ①获取...("name"); tv_main.setText(name); 2. startActivityForResult()方法解析 在创建了Intent之后 , 一般情况下是使用startActivity

    48230

    【建议收藏系列】:我打赌你一定没搞明白的Activity启动模式!

    比如你的应用希望去发送一封邮件,你就可以定义一个具有"send"动作的Intent,并且传入一些数据,如对方邮箱地址、邮件内容等。...(称其B应用)中的组件(称其B组件)就可以了,但是这就引发了一个新问题,A组件运行在A应用中,B组件运行在B应用中,自然都不在同一个进程中,那么从B组件中返回的时候,如何实现正确返回到A组件呢?...正常情况下,当一个Activity启动了另一个Activity的时候,新启动的Activity就会置于任务栈的顶端,并处于活动状态,而启动它的Activity虽然成功身退,但依然保留在任务栈中,处于停止状态...对于大部分应用,当我们在主界面点击回退按钮的时候都是退出应用,那么当我们第一次进入主界面之后,主界面位于栈底,以后不管我们打开了多少个Activity,只要我们再次回到主界面,都应该使用将主界面Activity...设置Intent的Flag 系统提供了两种方式来设置一个Activity的启动模式,除了在AndroidManifest文件中设置以外,还可以通过Intent的Flag来设置一个Activity的启动模式

    2.3K00

    Android拾萃- Activity的生命周期和启动模式

    在有些情况下,Activity 将只在金字塔中部分下移并等待(比如,当用户切换到其他应用时),Activity 可从该点开始移回顶端(如果用户返回到该 Activity),并在用户停止的位置继续。...但是,如果系统因系统局限性(而非正常应用行为)而销毁 Activity,尽管 Activity 实际实例已不在,系统会记住其存在,这样,如果用户导航回实例,系统会使用描述 Activity 被销毁时状态的一组已保存数据创建...默认情况下,系统会使用 Bundle 实例状态保存您的 Activity 布局(比如,输入到 EditText 对象中的文本值)中有关每个 View 对象的信息。...要保存有关 Activity 状态的其他数据,您必须替代 onSaveInstanceState() 回调方法。...Standard 模式   又称为标准模式,也是系统的默认模式(可以不指定),在这样模式下,每启动一个Activity都会重新创建一个Activity的新实例,并且将其加入任务栈中,而且完全不会去考虑这个实例是否已存在

    1.6K50

    Android:8.0中未知来源安装权限变更

    ---- 一、问题现象 在测试APK升级逻辑时,偶然发现在8.0系统的手机中,APK下载完就没有然后了,没有弹出安装界面,不执行安装逻辑。但是在8.0之前的版本中可以正常下载,正常弹起安装界面。...允许安装未知来源 是针对所有APP的,只要开启了,那么所有的未知来源APP都可以安装。...我们可以通过PackageManager中的canRequestPackageInstalls()来检测是否已经开启了未知来源安装权限。true 表示获取了权限,false 表示没有获取权限。...具体示例代码如下: 下载逻辑省略,此处只列出 未知来源权限和安装 的处理逻辑 下面的逻辑实在 WelcomeActivity中实现的,所以,可以直接使用 startActivityForResult 并在...使用startActivityForResult 是为了在关闭设置界面之后,获取用户的操作结果,然后根据结果做其他处理 Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES

    3.6K30

    7.Activity

    然后在 data部分指定了协议是 tel,号码是 10086 Activity跳转时的数据传递 俩种方法: Activity通过Intent启动时,可以通过Intent对象携带数据到目标Activity...  : 步骤:从A界面打开B界面, B界面关闭的时候,返回一个数据给A界面 开启activity并且获取返回值 startActivityForResult(intent, 0); 在新开启的界面里面实现设置数据的逻辑...Activity中还提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...onSaveInstanceState()方法会携带一个 Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,比如可以使用 putString()方法保存字符串,使用 putInt()方法保存整型数据...这个参数在一般情况下都是null,但是当活动被系统回收之前有通过 onSaveInstanceState()方法来保存数据的话,这个参就会带有之前所保存的全部数据,我们只需要再通过相应的取值方法将数据取出即可

    1.3K150
    领券