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

Android点将台:颜值担当

) 5、保存数据: 在onStop之前,会调用onSaveInstanceState 其中有一个Bundle对象可以用来储存数据 该对象便是onCreate中的Bundle对象savedInstanceState...,下图旋转屏时使用onSaveInstanceState override fun onCreate(savedInstanceState: Bundle?)...selectedImage, filePathColumn, null, null, null ) cursor.moveToFirst() // 从数据视图中获取已选择图片的路径...销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 2:singleTop模式:顶复用栈 在启动活动时若栈顶已经是该Activity,则直接使用它...一直想总结一下Activity的启动流程(),这里从Activity的生命周期入手 本文所讲述的启动流程主要是ActivityThread的H在接收到消息之后,即handleMessage 至于消息如何传递过来的将在跨进程通信篇讲述

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

    Android动画实现详解

    例如 使用方法如下 运行效果图如上,在上面我们没有添加oneshot属性,则该属性默认false,也就是说该动画会一直循环执行,当我们设置true后则播放到最后一帧时动画停止,当我们想停止时可以使用AnimationDrawable...例如有些人给我们的Activity会加一些从左边进右边出的动画,那么当我们打开Activity时将Activity布局的fromXDelta值-100%p并将toXDelta为0%p,那么我们看到的效果就是从左边进入了...对于Activity 可能你不太理解为什么是设置了四种,假如有Activity1和Activity2。...当我们在Activity1中跳转到Activity2时,Activity1在页面上消失是执行的:activityOpenExitAnimation动画,Activity2出现在屏幕上执行的动画是activityOpenEnterAnimation...当Activity2 finish返回Activity1时,Activity2执行的动画是activityCloseExitAnimation,Activity1显示在屏幕执行的是activityCloseEnterAnimation

    53040

    onStop提前投放问题

    前言 最近遇到一个奇葩的问题,应用X的Activity1中点击一个Button跳转到Activity2,手机A比手机B上快500ms左右,虽然手机A比手机B的配置高,但是我不信差距会那么大。...一、Trace先分析一下 我抓了两台手机的Trace简化后如下图,在UI线程发现两者一个重要的差异点,在手机B中,Activity1 onStop竟然跑在了ViewRootImpl doTraversal...四、写个Demo 我赶紧写个程序验证一下我的猜想,程序也很简单,我们从MainActivity跳转到Main2Activity,在Main2Activity的onResume中休眠500ms,在MainActivity...错误1:Activity1跳转Activity2代码特殊,造成NS为1,导致了onStop的提前,不是由正常的ActivityIdle的触发。...思考 有时间我还是要继续研究以下,如何让Activity1启动到Activity2的时候,NS为1,我看了一下应用X的Activity1和Activity2在不同的Task,我也改了一下我的Demo,变成两个

    81420

    Activity堆栈管理

    当用户按下返回键时,第二个activity从栈中弹出,第一个activity又在当前屏幕显示。...当用户按下HOME键返回到程序启动器(application launcher)后,选择了一个新的应用程序(事实上是一个新的task),当前的task就被转移到后台,新的task中的根activity将被显示在屏幕上...activity和task之间的联系,以及task中的 activity的行为可以通过intent中的标记 以及在manifest中的元素的属性 控制。...4种分类来区分,以下假设位于task1中的activity1启动activity2: 模式/分类 包容activity2的task 一个activity是否允许有多个实例 activity是否允许有其它...如果activity1的运行在该模式下,则activity2一定与activity1位于不同的task 对于新到的intent,如果是由新创建的activity对象来接收,则用户可以通过返回键回到之前的

    1.2K100

    EventBus原理解析笔记以及案例实战(结合demo)

    里面封装要传递的事件类型和数据; Subscriber:事件订阅者,接收待定的事件 在Event中,使用约定来制定事件订阅者以简化使用; 在3.0之前,EventBus还没使用注解的方式, 消息处理的方法也仅限于...按下Activity1中的Button, 会跳转到Activity2; 按下Activity2中的button, 会通过EventBus去通知Activity1; Activity1会通过OnEvent...所以这里 事件的发送(在Activity2), 事件的接收(在Activity1) 都在同一个线程中; 即,以上所说的PostThread线程类型中, 事件的发送 跟 事件的接收 是在同一个线程里面的...使用技巧 事件只需要传递一个状态 / 指令,无需传递数据时, event自定义类内容可以为空; 比如一个只需要传递“清空位置信息列表”这个指令的事件, 可以这么定义: ?...通过建立多个注解方法,并以不同的event 形参, 来区分处理,接收到不同的event时,该做的对应的逻辑; ?

    2.2K10

    Activity之间的数据传递方法汇总

    1、通过 Intent 传递 我们在进行 Activity 跳转时,是要有 Intent,此时 Intent 是可以携带数据的,我们可以利用它将数据传递给其它Activity。...容我煮个栗子: 假设有 Activity1,Activity2 两个 Activity;如果要在 Activity1 中启动 Activity2,并传过去几个基本类型的数据,就可以这么写: Intent...因此当我们想让自定义的类型也能通过 Intent 传递时,只需要让该类实现 Serializable 接口即可。...但是,全局变量在 APP 运行期间一直存在,如果通过全局变量存放的数据量比较大,变量个数多;并且在不需要使用后,没有及时的将全局变量置为 null,好让 GC 去回收,那么是有可能会引发 OOM 问题的...5、通过 SettingsProvider 传递 爱折腾的人可能注意到了 Android 设备上一般都会有这么一个应用,它的作用是通过数据库去维护一些系统配置信息。

    3.2K40

    大话企业级android读书笔记(二)

    将他们合并在一起,这七个方法定义了活动的整个生命周期。有三个嵌套的循环,你可以通过这七个方法监视: 活动的整个生命时间,从第一次调用onCreate()开始直到调用onDestroy()结束。...举例来说,有一个线程运行在后台从网络上下载数据,它可能会在onCreate()中创建线程,在onDestroy()中结束线程。...活动的可视生命时间,从调用onStart()到相应的调用onStop() 。在这期间,用户可以在屏幕上看见活动,虽然它可能不是运行在前台且与用户交互。在这两个方法之间,你可以保持显示活动所需要的资源。...因为onPause()是唯一一个保证在进程被杀之前会调用的,因此你应该使用onPause()来写任何持久化存储数据。 被标记为No的方法保护活动寄宿的进程在他们调用的时候不会被杀掉。...用于多个Activity之间互相传递数据。 android的隐形管理员:Service Service从字面上理解即为“服务”,这里与windows中的服务有点类似。

    1K50

    Intent常用flag之FLAG_ACTIVITY_CLEAR_TOP

    先说Activity 的四种启动模式: 1:standard:默认模式,不需要配置LaunchMode,默认在从Activity1跳转到Activity2,然后从Activity2跳转到Activity3...,此时不管桟中有没有Activity2、3,程序都会新创建一个新的Activity,最后依次返回,会按照倒叙的顺序依次退出,类似退桟的过程。...2:singleTop:singleTop:模式和默认模式(standard)都会创建一个新的实例,区别是singleTop在创建时如果此时桟顶为要创建的实例,那么就不再新创建,而是直接使用桟顶的实例。...3:singleTask: 和前边俩个不同,singleTask在一个桟中只创建一个Activity的实例,如果没有在创建。...A,如果不加Flag,顺序会是D—C—B—A,这样可能满足不了需求,如果在跳转的时候,给Intent加上FLAG_ACTIVITY_CLEAR_TOP,这个标签,就可以直接从D–A,开发中可以用来解决退出的问题

    79710

    Android高频面试专题 - 基础篇(一)Activity

    并通过连接调用Zygote的native方法forkAndSpecialize,执行fork任务。之后再通过跨进程调用进入到Activity2所在的进程中。...主线程拿到Activity2的信息后,调用Instrumentation类的newActivity方法,其内通过ClassLoader创建Activity2实例。...进行排序,所以在添加、删除、查找数据的时候,都会使用二分法查找,只适合于小数据量操作,如果在数据量比较大的情况下,那么它的性能将退化。...因为使用Bundle的场景大多数为小数据量,我没见过在两个Activity之间传递10个以上数据的场景,所以相比之下,在这种情况下使用ArrayMap保存数据,在操作速度和内存占用上都具有优势,因此使用...intent传递数据有限制,实质上是由Binder内核传递,并不是为了传输大量数据而设计,而是为了进程间频繁通信所设计,内核限制是4M,在APP中限制了不到1M(比1M略小的值),真机中可能还有其他任务在占用

    2K31

    Android小技巧: 这里涵盖了所有实现 “一键退出 App” 的方法

    当需要退出 App时启动入口 Activity 此时入口 Activity 上层的Activity实例都将自动关闭移除 & 自身被放置在栈顶(这是SingleTask启动模式的特点) 通过在入口...( 调用onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2 & 一键退出) 步骤1:在MainActivity 中设置 重写 onNewIntent...自身实现 方法1:创建 链表 原理:通过在Application子类中建立一个 Activity链表:保存正在运行的Activity实例;当需要一键退出App时把链表内所有Activity实例逐个退出即可...(即Activity1 - Activity2 -Activity3(在Activity3调用上述两个方法)) 答: 1....总结 在 需要实现 一键退出 App 功能时,实际上是需要完成2个步骤: 步骤1:一键结束当前App所有的Activity 步骤2:一键结束当前App进程 每个步骤的方法总结如下 ?

    2K42

    Carson带你学Android:这里涵盖了所有实现 “一键退出 App” 的方法

    启动模式的特点) 通过在入口 Activity 回调的onNewIntent()中关闭自身即可 若在后面的Activity启动 任务栈底的Activity时,就会调用任务栈底Activity的onNewIntent...( 调用onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2 & 一键退出) 步骤1:在MainActivity 中设置 重写 onNewIntent...自身实现 方法1:创建 链表 原理:通过在Application子类中建立一个 Activity链表:保存正在运行的Activity实例;当需要一键退出App时把链表内所有Activity实例逐个退出即可...(即Activity1 - Activity2 -Activity3(在Activity3调用上述两个方法)) 答: 结束Activity3(当前 Activity )& 结束进程 再次重新开启进程 &...总结 在 需要实现 一键退出 App 功能时,实际上是需要完成2个步骤: 步骤1:一键结束当前App所有的Activity 步骤2:一键结束当前App进程 每个步骤的方法总结如下

    78120

    Android小技巧: 这里涵盖了所有实现 “一键退出 App” 的方法

    Activity的onNewIntent() 通过在入口 Activity 回调的onNewIntent()中关闭自身即可 当需要退出 App时启动入口 Activity 将 App的入口 Activity...( 调用onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2 & 一键退出) 步骤1:在MainActivity 中设置 重写 onNewIntent...(即Activity1 - Activity2 -Activity3(在Activity3调用上述两个方法)) 答: 结束Activity3(当前 Activity )& 结束进程 再次重新开启进程...& 启动 Activity1 、 Activity2 ?...Demo地址 关于上述说的方法Demo都在https://github.com/Carson-Ho/App_1shot_Finsh 总结 在 需要实现 一键退出 App 功能时,实际上是需要完成2个步骤

    56720

    大前端开发中的路由管理之三:Android篇

    隐式调用通过Intent Filter来实现,Android系统会根据在隐式意图中设置的动作(action)、类别(category)、Data(URI和数据类型)找到合适的组件来处理这个意图。...从启动对象来看,显式Intent通过明确启动对象的组件信息使得有固定的接收方,隐式Intent通过Intent Filter过滤匹配合适的启动对象;从使用场景上看,在同一项目下的页面跳转可以使用显式Intent...② activity1_fragment1 -> activity2 ③ activity1_fragment1 -> activity2_fragment2 ④ activity1 -> activity2...Navigation和Flutter的路由有一定的相似性,这里是将frament作为跳转点,在开发时,可以清晰地看到每个界面的跳转路径。...类,实现接口ReactPackage、定义Application类,继承android的Application,并实现ReactApplication接口,其实是在原生端创建Module类通过桥接的方式导出到

    3.3K11

    锦囊篇|一文摸懂LeakCanary

    LeakCanary使用方法 看了很多使用介绍的博客,但是我用Version 2.X时,发现一个问题,全都没有LeakCanary.install(this)这样的函数调用,后来才知道是架构重构过,实现了静默加载...也就是一个单例模式,你要做的是在Activity1中实现往Activity2的跳转功能,Activity2实例化单例,这样再进行返回后就能查看到LeakCanary给我们放出的内存泄漏问题了。...因为Activity2已经被销毁了,但是context依旧被持有,导致Activity2无法被清理,而我们又不会再使用到,也就发生了内存泄漏。...从Version 1.X的源码中我们知道有这样的一个类LeakCanary,我们在Version 2.X是否还存在呢?毕竟我们上文中一直是没有提到过这样的一个类的。那就Search一下好了。...通过搜索发现是存在的,并且在文件的第一句写了这样的一句话 /** * The entry point API for LeakCanary.

    66230

    阿里ARouter使用及源码解析(一)

    在Android中的跳转一般通过显式intent和隐式intent两种方式实现的,而Android的原生跳转方式会存在一些缺点: 显式intent的实现方式,因为会存在直接的类依赖的问题,导致耦合严重;...ARouter在拦截器中会把目标页面的信息封装一个类Postcard,这个类就包含了目标页面注解上@Route标识的各种信息。关于拦截器的使用以及源码分析,后续会有介绍。...上面三个文件均是通过注解处理器RouteProcessor生成的,关于如何自定义注解处理器,可以阅读Android编译时注解APT实战(AbstractProcessor),同时也需要学习JavaPoet...值得注意的是,在初始化阶段,ARouter 仅载入了 Group 清单,并没有具体载入每个 Group 中包含的具体的路由节点清单,只有当使用到具体的 Group 时,才会加载对应的 Group 列表。...补充 关于ARouter的基本用法上面只有最基本跳转的介绍,下面对其他一些基本使用进行下补充 带参数跳转 //1.传递参数 ARouter.getInstance().build("/test/activity1

    1.3K20

    Android开发高级进阶——Service与Notification

    Service的分类 ---- 按种类分为LocalService和RemoteService LocalService:当前进程的Service,依附在主进程上,节约资源,通信不需要进程间通信,但主进程被杀掉时...RemoteService:远程进程的Service,是一个独立的进程,当主进程被杀掉时,其服务依然会运行,比较灵活,但使用复杂。...其实它们之间并无太大关联,只是Service可以放在其他进程中,Service是进程中的,Thread也是进程中的,Service中耗时操作又可以在通过Thread执行。...例如,Activity创建了一个子线程在后台运行,执行完之后,返回数据时,创建它的Activity已被销毁,这是线程不安全的。...再例如,Activity1创建了一个子线程,Activity2是无法对Activity1创建的子线程进行操作。

    1.7K40

    Activity

    在不明确要启动的Activity的时候 可以在intent中添加关于启动目标的描述和类型,系统会过滤所有的Activity的intentFilter来匹配 ;一般 在同一个应用中不必使用隐式Intent...当前activity1跳往到activity2 ,activity就会把activity1覆盖,这时就调用了此方法 onRestart(); 重新启动 onDestroy():activity再结束前调用的最后一个方法...;这里可以进行一些释放资源的操作 三种阶段 完整生命周期: 从调用的第一个方法 onCreate() 到最后调用一个的方法onDestroy() ,在onCreate()方法中可以进行一些全局的配置,UI...的引用,数据的初始化,也可以从savedInstanceState中读取 保存在设备中或者执行reCreate方法前保存的数据等前提savedInstanceSate不为null,在onDestroy(...)方法中可以 释放资源等 可视周期:在执行onStart()和onStop()之间 在这期间 你可以在屏幕上看到这个Activity但是 不能再前台跟用户交互 。

    97860

    Activity 过渡动画 — 让切换更加炫酷

    而 androi5.x 提供的切换动画就显得非常自然,而且容易使用。 现在我们来看看 androi5.x 提供的动画效果图: ?...的切换动画效果,除了这三种以外,我们看如上动态图中的 “共享元素” ,它其实也是一种转场动画,只不过这种需要一定的条件才能够使用。...比如: activity1 和 activity2 中有两个一模一样的内容,从 activity1 跳转到 activity2 时我们才运用共享元素的动画效果,达到更加的 ui 体验。...explode 从屏幕中间进或者出,然后将视图移动至最后位置,达到动画的效果。 二、slide(滑动) 效果图: ? slide 是从屏幕边缘进出,同理通过移动视图形成动画。...fade 则是通过改变视图的透明度来达到动画效果。

    3.5K41
    领券