iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android编程之Activity中onDestroy()调用分析
  • 560
分享到

Android编程之Activity中onDestroy()调用分析

调用activityAndroid 2022-06-06 09:06:04 560人浏览 泡泡鱼
摘要

本文分析了Android编程之Activity中onDestroy()调用方法。分享给大家供大家参考,具体如下: 刚刚一个BUG让我发现,如果 activity 实现了一个回调

本文分析了Android编程之Activity中onDestroy()调用方法。分享给大家供大家参考,具体如下:

刚刚一个BUG让我发现,如果 activity 实现了一个回调接口,然后使用 this 设置给需要回调接口的方法,这种应用场景比较常见,最常见的就是实现 onClickListener 接口,然后 findViewById().setOnClickListenr(this)

如果,这个回调接口设置到了一个静态对象(单例模式),当 activity finish() 的时候(按返回键,回到桌面),则activity 不会被调用 onDestroy() ,原因可能是 activity 对象还在被引用!

此时你再点击图标回到应用,onCreate() 再次调用!

很明显,如果你把资源释放放在了 onDestroy() 里面,就会导致内存泄露!

那有没有解决办法呢?有的

你可以在 onPause() 方法里面判断 isFinishing() ,正常调用 finish() 后 activity 的回调过程是 onPause、onStop、onDestroy ,倘若出现上面的情况,只到 onPause!但是 isFinishing() 标志还是为 true !你可以释放资源了。

我们来看下  onDestroy 的官方解释:


protected void onDestroy () 
Added in api level 1 
PerfORM any final cleanup before an activity is destroyed. This can happen either because the activity is finishing (someone called finish() on it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenariOS with the isFinishing() method. 
Note: do not count on this method being called as a place for saving data! For example, if an activity is editing data in a content provider, those edits should be committed in either onPause() or onSaveInstanceState(Bundle), not here. This method is usually implemented to free resources like threads that are associated with an activity, so that a destroyed activity does not leave such things around while the rest of its application is still running. There are situations where the system will simply kill the activity's hosting process without calling this method (or any others) in it, so it should not be used to do things that are intended to remain around after the process Goes away. 
Derived classes must call through to the super class's implementation of this method. If they do not, an exception will be thrown. 

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:Material Design系列之Behavior实现Android知乎首页PHP、java、android、ios通用的3Des方法(推荐)Android5.0中Material Design的新特性Android数据加密之Des加密详解Android程序开发之使用Design包实现QQ动画侧滑效果和滑动菜单导航Android App仿QQ制作Material Design风格沉浸式状态栏详解Android Material Design自定义动画的编写学习Android Material Design(RecyclerView代替ListView)android:descendantFocusability方法介绍Android数据加密之Des加密


--结束END--

本文标题: Android编程之Activity中onDestroy()调用分析

本文链接: https://www.lsjlt.com/news/26153.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中Activity生命周期调用的示例分析
    这篇文章将为大家详细讲解有关Android中Activity生命周期调用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。状态活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就...
    99+
    2023-06-22
  • Android组件Activity的启动过程深入分析
    目录前言源码分析总结前言 Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又...
    99+
    2023-05-15
    Android Activity启动过程 Android Activity启动方法
  • java编程中实现调用js方法分析
    本文实例讲述了java编程中实现调用js方法。分享给大家供大家参考,具体如下:public void test2(){ ScriptEngineManager manager = new ScriptEngineManager();...
    99+
    2023-05-31
    java js方法 ava
  • Android 无障碍服务 performAction 调用过程分析
    目录View 的 performClick 方法是同步的还是异步的?总结无障碍服务可以模拟一些用户操作,无障碍可以处理的对象,通过类 AccessibilityNodeInfo 表示...
    99+
    2024-04-02
  • Android下Activity间通信序列化过程中深浅拷贝的示例分析
    这篇文章主要介绍了Android下Activity间通信序列化过程中深浅拷贝的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言问题的背景是,视频互动业务需要增加弹幕...
    99+
    2023-05-30
    android activity
  • Android编程实现在Activity中操作刷新另外一个Activity数据列表的方法
    本文实例讲述了Android编程实现在Activity中操作刷新另外一个Activity数据列表的方法。分享给大家供大家参考,具体如下:做Android项目中遇到这样一个问题:有两个acticity,一个显示好友列表,另外一个显示会话列表,...
    99+
    2023-05-31
    android activity
  • C++编程之std::forward使用代码分析
    今天小编给大家分享一下C++编程之std::forward使用代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。std:...
    99+
    2023-07-05
  • 解决Android加壳过程中mprotect调用失败的原因分析
    目录问题原由调用mprotect修改内存失败的现象mprotect调用失败的原因分析两种可行的解决方案小结问题原由 函数抽取壳是当前最为流行的DEX加壳方式之一,这种加壳方式的主要流...
    99+
    2024-04-02
  • Android编程中自定义组件的示例分析
    这篇文章主要介绍了Android编程中自定义组件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android是什么Android是一种基于Linux内核的自由及开放...
    99+
    2023-05-31
    android
  • 分析并发编程之LongAdder原理
    目录一、前言二、LongAdder类的使用三、LongAdder原理的直观理解四、源码分析五、与AtomicInteger的比较六、思想的抽象一、前言 ConcurrentHashM...
    99+
    2024-04-02
  • Android应用中怎么实现Activity之间的数据传递
    本篇文章为大家展示了Android应用中怎么实现Activity之间的数据传递,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MainActivitypublic class MainActivity...
    99+
    2023-05-31
    android roi activity
  • Android应用中apk反编译的示例分析
    这篇文章将为大家详细讲解有关Android应用中apk反编译的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述这里是Mac环境,如果是window环境的同学,在环境搭建和工具上可以选择Windo...
    99+
    2023-06-15
  • Android入门之在子线程中调用Handler详解
    目录简介本章示例前端代码后端代码简介 前一章我们以一个简单的小动画来解释了Handler。 这章我们会介绍在子线程里写Handler。如果是Handler写在了子线程中的话,我们就需...
    99+
    2022-12-08
    Android子线程调用Handler Android调用Handler Android 子线程 Handler
  • Java之网络编程的示例分析
    小编给大家分享一下Java之网络编程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java基础之网络编程基本概念IP:每个电脑都有一个IP地址,在局域网...
    99+
    2023-06-20
  • 分析Android中线程和线程池
    目录前言HandlerThreadIntentService线程池的好处ThreadPoolExecutor线程池的分类FixedThreadPoolCachedThreadPool...
    99+
    2024-04-02
  • FreeRTOS进阶之调度器启动过程分析
    目录FreeRTOS基本程序架构启动FreeRTOS调度器Cortex-M3中断优先级SVC中断服务函数FreeRTOS基本程序架构 int main(void) { 必...
    99+
    2024-04-02
  • 分析Java并发编程之信号量Semaphore
    目录一、认识Semaphore1.1、Semaphore 的使用场景1.2、Semaphore 使用1.3、Semaphore 信号量的模型二、Semaphore 深入理解2.1、S...
    99+
    2024-04-02
  • C++ 函数在并发编程中的调试和分析技巧?
    调试和分析并发 c++++ 函数的技术包括:使用调试器逐步执行代码和检查变量。使用 threadsanitizer 分析线程同步以检测死锁和竞争条件。使用 valgrind 的 data...
    99+
    2024-04-26
    c++ 并发编程
  • Shell编程之if语句的示例分析
    这篇文章给大家分享的是有关Shell编程之if语句的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、if条件语句1、单分支语句结构第一种语法如下:if <条件表达式> &...
    99+
    2023-06-09
  • Java之JMM高并发编程实例分析
    这篇文章主要介绍“Java之JMM高并发编程实例分析”,在日常操作中,相信很多人在Java之JMM高并发编程实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java之JMM高并发编程实例分析”的疑惑有所...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作