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

Activity onStop,onDestroy延迟10s执行

最近发现项目里的一个问题.从 Activity A 进入 Activity B.然后从B返回的时候理论上应该是A onResume之后就会走B的onStop,onDestroy.但是并不是,发现在极端情况下会延迟将近...= null) { //finishes 数组,调用onDestroy activityRemoved |= stack.destroyActivityLocked...接下来就有个疑问了,为啥 onStop,onDestroy 没有立即执行?...必须要等到 MessageQueue 里面没有数据的时候才会去调用 也就是说 onStop,onDestroy 的调用和消息队列有关.如果消息队列很快就空了, onStop,onDestroy 就很快返回....如果主线程还有消息未处理(比如一直 invalidate )会一直处理,直到超过10s强制调用 现在终于明白为啥 onStop,onDestroy 没有直接返回.那么文章最初的问题又该如何处理呢?

1.9K70

MyApplication.getInstance().exit() 与onDestroy 、finish(),onKeyDown()的关系

49231103 因为我们有时候会用到全局变量application   在一个activity启动的时候我们把 这个activity加入到 application...addActivity(this); 当我们退出的时候  比如onkeydown的时候用 MyApplication.getInstance().exit()    这个代码也只会在程序的主activity执行...,也就是必须触发这个指令 那么这个代码就是在ondestroy()执行的, 如果你直接在onkeyDown  也就是通常看见的连接点击退出程序的时候直接调用MyApplication.getInstance...().exit() 就会出错了 当前的你调用的这个类ondestroy将不会被执行的 下面是onkeydown和ondestroy的执行顺序: 10-18 21:28:21.471: I/TAG(10652...().exit(); super.onDestroy(); } 注意这个东西只存在于整个程序的主类

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

    Activity onDestroy() 回调缓慢问题分析及完美解决方案

    说到Activity的onDestroy,对所有的Android开发者都很熟悉,但是不一定都知道里面存在着一些坑,分享给大家,以后踩的时候可以应急 用Activity的时候,会发现如下问题:   ...有时候会发现Activity的onDestroy方法回调比较缓慢(可以达到好几秒钟之后才调用),即使之前使用finish方式关闭Activity也一样 onDestroy回调慢带来什么问题呢?   ...有可能再次打开Activity的时候,都走完了onCreate,onResume之后上一次的onDestroy方法才被调用,想想如果在onResume和 onDestroy中共同维护了一个变量(isActivityShowing...解决方法与建议   所以建议不要在Activity的onDestroy方法做有关于数据存储,状态维护的事情,回收资源也最好不要完全依赖这个方法,可以用下面的方式 比较靠谱的解决方式 private...if (isFinishing()) { destroy(); } } @Override public void onDestroy

    2.3K70

    jsfind的用法_jsfind函数

    今天我们要说的是结合ES6新特性谈一下js里面的一个很好用的方法-find() 现在的前端和过去的不一样,过去的前端只要会画页面就行了,但是现在仅仅会画页面已经远远不够了,现在前端还需要会处理数据,而且还要会将数据分析分类处理...下面我们讲怎么用前端处理这块的逻辑 首先我们拿到了所有的数据这里我直接放到一个测试用的js里面存放, 要实现之前说的效果,就需要使用我们今天的主角find()方法。 find()是用来做什么的呢?...find()方法返回数组符合测试函数条件的第一个元素。否则返回undefined 在本文章需要注意的几个点: ①、第一个元素 ②、测试函数 那么如何使用呢?.../find_testcodes.js" type="text/javascript" charset="utf-8">

    11.6K30

    android onresume函数,Android界面跳转时候onDestroy和onResume的调用顺序

    Android在界面跳转的时候,比如从Activity A 跳回 Activity B,并不是先执行A的onDestroy,而是执行完A的onPause之后就立即跳回Activity B里的onResume...在执行了Activity B 的onResume之后一两秒甚至更长一点的时间才执行Activity A里的onDestroy。 这样的处理机制应该是为了能够立即响应用户的操作。...A,则Activity A在onCreate解密视频c(此时视频c是已经加密过的)。...所以,对时间要求和Activity是否获取焦点密切相关的操作,不能放在onCreate和onDestroy里,而应该考虑放在onResume和onPause里。...而像上述举的例子,如果是使用surfaceView来播放视频的话,也可以考虑在surfaceHolder.addCallback里的new Callback()的实现的surfaceCreated和surfaceDestroyed

    1.1K10

    vue文件引入js_vuerequire引入js

    vue-cli 2.0的作法是在static文件下创建js。...vue-cli 3.0 的写法则是直接在public文件夹下创建js、 具体操作如下: 1、在public文件夹下创建config.js文件,里面文件的语法是es5,不允许使用浏览器不能兼容的es6语法...dataBaseId: config.networkGuard.accountDBID, params: config.networkGuard.countDBQry }) …… 个人错误记录: 在开发环境,...开发过程,没有出问题,但是在打包发布以后,发现修改config文件并不生效。 经过排查才意识到:不打包编译的js文件不识别es6语法,并且不应该使用import方法进行引入。...应该按照原生的js文件进行使用 到此这篇关于vue引入静态js文件的方法的文章就介绍到这了,更多相关vue引入静态js文件内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程

    12.1K50

    JsString对象

    JsString对象 String全局对象是一个用于字符串或一个字符序列的构造函数。...描述 创建一个字符串可以通过字面量的方式,通过字面量创建的字符串变量在调用方法的时候能够自动转化为临时的包装对象,从而能够调用其构造函数的原型的方法,也可以利用String对象生成字符串对象,此外在ES6...事实上,Js基本数据类型的值不可变,基本类型的值一旦创建就不能被改变,所有操作只能返回一个新的值而不能去改变旧的值。...String.prototype.includes() str.includes(searchString[, position]) includes()方法用于判断一个字符串是否包含在另一个字符串,...根据情况返回true或false,参数searchString是要在此字符串搜索的字符串,position可选,是从当前字符串的哪个索引位置开始搜寻子字符串,默认值为0。

    7.7K20

    Js的变量

    Js的变量:  1:如果在var没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级申明一个变量时,就必须用var.   ...var currentCount  5: 在 JScript null 和 undefined 的主要区别是 null 的操作象数字 0,    而 undefined 的操作象特殊值NaN (不是一个数字...js的数据类型  1:Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型    主要(基本)数据类型是: 字符串 数值 布尔    复合(引用)数据类型是: 对象 数组    特殊数据类型是...: Null Undefined  2:测试是否已经声明变量 x :    if (typeof(x) == "undefined")      // 作某些操作 js的内置对象  1:Jscript

    12.9K60

    JsNumber对象

    JsNumber对象 JavaScript的Number对象是经过封装从而能够处理数字值的对象,Number对象由Number()构造器以及字面量声明的值在转化为包装对象时创建,JavaScript的...描述 创建一个数字可以通过字面量的方式,通过字面量创建的数字变量在调用方法的时候能够自动转化为临时的包装对象,从而能够调用其构造函数的原型的方法,也可以利用Number对象生成数值对象,,JavaScript...作为对比,2^53就不是一个安全整数,它能够使用IEEE-754表示,但是2^53 + 1不能使用IEEE-754直接表示,在就近舍入round-to-nearest和向零舍入,会被舍入为 2^53。...) Number.parseFloat()方法可以把一个字符串解析成浮点数,如果无法被解析成浮点数,则返回NaN,该方法与全局的parseFloat()函数相同,并且处于ECMAScript 6规范,...在旧的实现,会忽略locales和options参数,使用的语言环境和返回的字符串的形式完全取决于实现方式。

    3.4K42

    JSprototype介绍

    console.log(o2.a); //[] console.log(typeof o2.fn); //function 上面的代码运行结果完全符合预期,但同时也说明一个问题,在o1修改了...a和fn,而在o2没有改变,由于数组和函数都是对象,是引用类型, 这就说明o1的属性和方法与o2的属性与方法虽然同名但却不是一个引用,而是对Obj对象定义的属性和方法的一个复制。...同样道理如果在实例定义如prototype同名的属性或函数,则会覆盖prototype的属性或函数。...Person('Byron'); person.share=0; console.log(person.share); //0而不是prototype的...了解了这些知识就可以构建一个科学些的、复用率高的对象,如果希望实例对象的属性或函数则定义到prototype, 如果希望每个实例单独拥有的属性或方法则定义到this,可以通过构造函数传递实例化参数

    88910

    Js的堆栈

    Js的堆栈 堆heap是动态分配的内存,大小不定也不会自动释放,栈stack为自动分配的内存空间,在代码执行过程自动释放。...栈区 在栈内存中提供一个供Js代码执行的环境,关于作用域以及函数的调用都是栈内存执行的。...Js基本数据类型String、Number、Boolean、Null、Undefined、Symbol,占用空间小且大小固定,值直接保存在栈内存,是按值访问,对于Object引用类型,其指针放置于栈内存...,在栈内存存储对象的指针,对于对象的访问是按引用访问的,在堆区的内存不会随着程序的运行而自动释放,这就需要实现垃圾回收机制GC,需要注意的是在Js没有类似于C的free()函数去手动释放内存,对于堆区内存回收全部需要通过...,从而决定是否需要进行内存回收,在Js主要有引用计数与标记清除两种垃圾回收算法。

    3.1K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券