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

onStop提前投放问题

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

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

    2-AI--Activity启动方式

    零、前言 standard:默认的启动模式 |---启动一个Activity,该Activity就会在返回栈中入栈 |---该Activity处于栈顶的位置 |---每次启动都会创建该...Activity的新实例 singleTop: |---在启动活动时若栈顶已经是该Activity,则认为可以直接使用它 singleTask: |---整个应用程序的上下文中只存在一个实例...|---两次相同实例之间的Activity会被杀死 singleInstance: |---启用一个新的返回栈来管理这个活动 一、测试类 Activity1 public class...E/TASK_ID: Activity1 销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 可见第二次打开Activity2时并无变化,因为singleTop...: Activity1 销毁 可见第二次打开Activity2时并无变化,第三次打开Activity2,Activity1销毁 ?

    58240

    Android点将台:颜值担当

    TASK_ID: Activity2 Task id is 89 依次返回 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 E/TASK_ID: Activity2...销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 2:singleTop模式:顶复用栈 在启动活动时若栈顶已经是该Activity,则直接使用它..., Activity2 为singleTask 依次打开Activity1、2、2、1、2 E/TASK_ID: Activity1 Task id is 94 E/TASK_ID: Activity2...E/TASK_ID: Activity1 销毁 4:singleInstance 单独实例栈 启用一个新的活动栈来管理这个活动(够豪,够任性) 测试:Activity1为standard, Activity2...一直想总结一下Activity的启动流程(),这里从Activity的生命周期入手 本文所讲述的启动流程主要是ActivityThread的H在接收到消息之后,即handleMessage 至于消息如何传递过来的将在跨进程通信篇讲述

    13810

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

    当它再次显示给用户时,必须要完全重新启动和恢复到之前的状态。...随着活动从一个状态转为另一个状态,通过调用下面的受保护的方法通知该改变: void onCreate(Bundle saveInstanceState) void onStart() void onRestart...在这期间,频繁地在重用和暂停状态转换——例如,当设备进入睡眠状态或一个新的活动启动时调用onPause(),当一个活动返回或一个新的意图被传输时调用onResume()。...Service会先调用onUnbind(),然后是onDestory(). android的接收员:BroadcastReceiver 广播接收者用于异步接收广播Intent 广播接收者没有界面,但是接收到消息后可以启动一个...Activity,或者可以使用NotifcationManager来通知用户。

    1K50

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

    Activity位于任务栈栈顶,那么此Activity的实例就不会重建,而是重用栈顶的实例( 调用onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2...& 一键退出) 步骤1:在MainActivity 中设置 重写 onNewIntent() MainActivity.java // 设置 按钮 跳转到Activity2...的上层的Activity2会被销毁,此时MainActivity位于栈顶;由于步骤2的设置,所以不会新建MainActivity而是重用栈顶的实例&调用实onNewIntent()...(即Activity1 - Activity2 -Activity3(在Activity3调用上述两个方法)) 答: 结束Activity3(当前 Activity )& 结束进程 再次重新开启进程 &...启动 Activity1 、 Activity2 即在Android 中,调用上述Dalvik VM本地方法结果是: 结束当前 Activity & 结束进程 之后再重新开启进程 & 启动 之前除当前

    78120

    细谈Activity四种启动模式

    一个应用程序通常会有多个Activity,这些Activity都有一个对应的action(如MainActivity的action),我们可以通过action来启动对应Activity(隐式启动)。...接下来我们来正式看Activity的启动模式: 二、Activity启动模式: 1....每个Activity界面都只有一个显示当前界面名称的TextView和一个用来组跳转的Button,所以应用OneText的功能就是从活动1跳转到活动2,活动2继续跳转活动2,代码就不给大家展示了,都能写出来...同样我们也用代码来实现一下这个过程: 还是刚才的那一坨代码,只是我们修改一下Activity1的模式为singleTask,然后让Activity2跳转到Activity3,让Activity3跳转到Activity1...在跳回MainActivity之后点击back键发现直接退出引用了,这说明此时的MainActivity为task内的最后一个Activity。所以这个模式过。

    95210

    Android动画实现详解

    它将为按钮与操作行为转换提供一些默认动画,我们可以定制触摸反馈,使用揭露效果,定制操作行为转换,指定定制转换,使用转换启动一个操作行为,以共享元素启动一个操作行为等等。...该方法一般写在startActivity()后和finish()后,如果我们想打开或者退出不显示动画,可将参数设置为0。...对于Activity 可能你不太理解为什么是设置了四种,假如有Activity1和Activity2。...当我们在Activity1中跳转到Activity2时,Activity1在页面上消失是执行的:activityOpenExitAnimation动画,Activity2出现在屏幕上执行的动画是activityOpenEnterAnimation...当Activity2 finish返回Activity1时,Activity2执行的动画是activityCloseExitAnimation,Activity1显示在屏幕执行的是activityCloseEnterAnimation

    53140

    Activity堆栈管理

    当用户按下HOME键返回到程序启动器(application launcher)后,选择了一个新的应用程序(事实上是一个新的task),当前的task就被转移到后台,新的task中的根activity将被显示在屏幕上...当用户再次按下返回键时,屏幕不会显示之前留下的那个activity(之前的task的根activity),而显示当前 activity从task栈中移出后栈顶的那个activity。...启动activity2: 模式/分类 包容activity2的task 一个activity是否允许有多个实例 activity是否允许有其它activity共存于一个task 对于新的intent,是否总是实例化...activity对象 standard 如果不包含FLAG_ACTIVITY_NEW_TASK标记,则activity2放入 task1,否则按前面讲述的规则为activity2选择task 可被多次实例化...如果activity1的运行在该模式下,则activity2一定与activity1位于不同的task 对于新到的intent,如果是由新创建的activity对象来接收,则用户可以通过返回键回到之前的

    1.2K100

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

    比如: activity1 和 activity2 中有两个一模一样的内容,从 activity1 跳转到 activity2 时我们才运用共享元素的动画效果,达到更加的 ui 体验。...如何使用 我们知道开启一个 activity 只需 startActivity(); 即可,更多的是,我们要想加入过渡动画,也只需要在 startActivity(); 中传入需要的参数即可。...第一步: 例如,我要从 MainActivity 中启动 AnimationActivity,只需要在 MainActivity 中 startActivity(); 传入参数即可,代码如下: startActivity...import butterknife.ButterKnife; import butterknife.OnClick; @SuppressLint("NewApi") public class MainActivity...毕业3年,我是如何从年薪10W的拖拽工程师成为30W资深Android开发者! 腾讯T3大牛带你了解 2019 Android开发趋势及必备技术点!

    3.5K41

    Activity

    其中重要的两个方法: onCreate() ,系统在创建Activity时调用此方法;在此方法实现视图绑定;一些 控件的初始化 onPuase(); 用户离开当前Activity调用的第一个方法 , 创建完成后必须在... 最简单的Activity 只绑定了一个视图 public class MainActivity...ImageView } } ---- 保存Activity的状态 当用户 离开Activity去往另一个Activity时;Activity会被压入返回栈,如果内存不够就会被销毁 ,当Activity被销毁后其中的数据当然就没了...Dialog Activity 你可以看到原本的Activity ,但是已经失去了焦点 ,无法交互 onStop() :当前Activity被覆盖时调用 例如 当前activity1跳往到activity2...,activity就会把activity1覆盖,这时就调用了此方法 onRestart(); 重新启动 onDestroy():activity再结束前调用的最后一个方法;这里可以进行一些释放资源的操作

    98160

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

    启动方式有startService和bindService startService:onCreate只会在Service第一次创建的时候被调用,start一次之后,下次不会再onCreate了,每次会执行...再例如,Activity1创建了一个子线程,Activity2是无法对Activity1创建的子线程进行操作。...enabled:boolean类型,true表示该服务默认被系统启动。 exported:表示该服务是否能够被其他应用程序控制或连接,是否向外通过服务。 四....在Notification内部,操作本身由PendingIntent定义,后者包含在应用中启动Activity的Intent。...例如,如果要在用户点击抽屉式通知栏中的通知文本时启动Activity,则可通过调用setContentIntent()来添加PendingIntent。

    1.7K40
    领券