安卓常见内存泄露解决办法

2023-10-27

    1:如果有打开Dialog,一定要在Activity的Destroy释放,否则有可能造成Activity异常退出时的内存泄露。
@Override
 protected void onDestroy()
 {
    super.onDestroy();
    if (progressDialog != null) {
     progressDialog.dismiss();
     progressDialog.cancel();
     progressDialog = null;
    }
 }
    2:利用Handler时,Handler 类应该是静态的否则可能发生泄漏。当我们Activity异常结束结束后,Message持有Handler的引用,而Handler有持有Activity的引用,这个Activity所有的资源,在这个消息处理之前都不能也不会被回收,所以就发生了内存泄露。
   解决办法如下:
   建立一个对外部Activity保持弱引用的内部类。 
       private static class MHandler extends Handler{
        private final WeakReference<Activity> mActivity;
        public MHandler(Activity activity) {
            mActivity = new WeakReference<Activity>(activity);
        }
        @Override
        public void handleMessage(Message msg) {
            if(mActivity.get() == null) {
                return;
            }
        }
    }
  private Handler myHandler = new MHandler(this) {

  public void handleMessage(Message msg) {
   if (progressDialog != null) {
    progressDialog.dismiss();
    progressDialog.cancel();
    progressDialog = null;
   }   
   switch (msg.arg1) {
   case 0:    
    if(index==1){
     mess1 = "你好,没有相关数据!";
     runOnUiThread(textRunSuccess_0);
    }else{
     //totalPage=list.get(0).getPageTotal();
     
     index=index-1;
     Toast.makeText(CustomerListActivity.this, "已经是尾页", Toast.LENGTH_LONG).show();
    }    
    break;
   case 1:
    setView(list); 
    break;
   case -1:
    mess1 = "网络中断,或服务器异常";
    runOnUiThread(textRunSuccess_0);
    break;
   default:
    break;
   }
   super.handleMessage(msg);
  }

 };

3:子线程异常处理,子线程一定要放在错误处理里面,不然有可能引起程序异常退出。

new Thread() {
   public void run() {
    Looper.prepare(); 
   try {

         //
         } catch (Exception e) {

    Message message = new Message();
    message.arg1=-1;
    myHandler.handleMessage(message);

   } 
  }
  }.start(); 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓常见内存泄露解决办法 的相关文章

  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript

随机推荐

  • C++模板基础(五)

    函数模板 函数模板的 完全 特化 template lt gt void f int template lt gt void f int 并不引入新的 同名 名称 只是为某个模板针对特定模板实参提供优化算法 函数模板的特化本质上是实例化 有
  • SQL Server不允许保存更改的解决方法

    点击上面的 工具 选项 在选项对话框中 点击 设计器 表设计器和数据库设计器 去掉 阻止保存要求重新创建表的更改 前面的勾 然后确定 好啦 再去试试吧 应该可以正常修改表的结构啦 o
  • 【NLP】第 2 章 : Transformers简介

    2017 年 12 月左右 发表了一篇题为 Attention Is All You Need 的开创性论文 这篇论文彻底改变了 NLP 领域在未来时代的面貌 本文描述了转换器和所谓的序列到序列架构 序列到序列 或 Seq2Seq 神经网络
  • Excel2013 利用phonetic函数将多行数据合并到同一单元格中

    场景 有一列邮箱数据 现在需要将他们合并到同一个单元格内 且邮箱之间要用英文的逗号隔开 以前五条邮箱为例 利用phonetic函数实现这种合并 合并结果 其中 E列是添加的辅助列
  • Python 调用Sikuli Jar包

    Python 调用Sikuli Python 目录 Sikuli简介 简要说明 环境设置 第一种 Jpype 第二种 Pyjnius 结论 目录 Sikuli简介 Sikuli是由MIT 麻省理工学院 研究团队发布的一种图形化编程技术 编程
  • 实现SSM简易商城项目的商品查询功能

    实现SSM简易商城项目的商品查询功能 介绍 在SSM Spring SpringMVC MyBatis 框架下 我们可以轻松地实现一个简易商城项目 本博客将重点介绍如何实现商品查询功能 帮助读者了解并掌握该功能的开发过程 步骤 1 创建数据
  • LeetCode-1306. Jump Game III

    Given an array of non negative integers arr you are initially positioned at start index of the array When you are at ind
  • 用Flask和Vue制作一个单页应用(自己学习)

    这里以一个简单的例子 展示如何把前端页面的增删改查请求 传递到后端进行数据的操作 一 https zhuanlan zhihu com p 311323583 二 https zhuanlan zhihu com p 311510196 三
  • 王者荣耀s15服务器维护,王者荣耀s15赛季更新全部内容

    原标题 王者荣耀s15赛季更新全部内容 王者荣耀S14很快就要结束了 体验服的版本更新也已经放出来进行测试了 大家都对新赛季的改动非常期待 究竟会有哪些英雄成为新的版本之子 哪些英雄会沦为下水道呢 以下均为体验服内容 不代表最终版本数据 p
  • 栈和队列 Stack and Queue

    Stack and Queue Stack and Queue Linked List Implementation ListNode Stack Queue Array Implementation Stack Queue Stack a
  • 又一巨头宣布入局AIGC,一口气开源数个模型,还道出了它的变现之道

    金磊 发自 凹非寺量子位 公众号 QbitAI AIGC AI生成内容 这个概念在今年可以说是火得一塌糊涂 例如Stable Diffusion 只要对它说一句话 唰唰唰 地就能秒生成画作 再如最近大火的ChatGPT 对答如流堪比人类 简
  • 学习day59

    昨天学了插槽 但是没有即笔记了 今天的是vuex 总体来说 vuex就是一个共享单车 每个人都可以使用他 也可也对他进行反馈 即把一个数据列为vuex 然后每个组件可以使用这个对象 也可也反过来反馈他 这一个设计是将A组件的一个数据作为公共
  • git报错

    Git报错总结 一 git remote add origin git code aliyun com account TestProject git发生报错 报错信息如下 error remote origin already exist
  • 输入三个字符串,要求找出其中的最大者

    解题思路 设一个二维的字符数组 大小为3 20 每一行存放一个字符串 字符串比较用strcmp 字符串复制用strcpy include
  • Shell脚本编程教程

    1 Shell脚本语言的基本结构 1 1 Shell脚本的用途 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 1 2 Shell脚本基本结构 Shell脚本编程 是基于过程式 解释执行的语言 编程语言的基本结构
  • jquery获取select选中的值

    误区 一直以为jquery获取select中option被选中的文本值 是这样写的 s text 获取所有option的文本值 实际上应该这样 s option selected text 获取选中的option的文本值 获取select中
  • 花费7元训练自己的GPT 2模型

    在上一篇博客中 我介绍了用Tensorflow来重现GPT 1的模型和训练的过程 这次我打算用Pytorch来重现GPT 2的模型并从头进行训练 GPT 2的模型相比GPT 1的改进并不多 主要在以下方面 1 GPT 2把layer nor
  • hexo设置博客的主题

    文章目录 一 设置博客的主题 二 设置博客的动态背景 一 设置博客的主题 1 登录 https hexo io themes 2 选择自己喜欢的个人主题 然后点击对应的主题 进入代码界面后 点击进入下面的按钮 然后进行保存 到对应的文件夹下
  • 【粉丝问答10】C语言关键字static的使用详解

    粉丝提问 粉丝问题 总结一下 关键字static的使用方法 要想搞清楚关键字static的使用方法 必须首先搞清楚 可执行程序段的分类以及各段在内存区的逻辑地址的映射 一 可执行程序内存分配 1 可执行程序程序分段 一个程序的3个基本段 t
  • 安卓常见内存泄露解决办法

    1 如果有打开Dialog 一定要在Activity的Destroy释放 否则有可能造成Activity异常退出时的内存泄露 Override protected void onDestroy super onDestroy if prog