`
zkl_1987
  • 浏览: 245785 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android 笔记 --- Android ANR介绍与避免

阅读更多
很多初入Android开发的网友可能发现ANR的字样,到底Android ANR是什么呢? 其实ANR就是Application Not Responding的全称,当某个应用处于长期假死状态时Android系统会弹出一个窗口上面写道,XXX is not responding给出两个按钮一个为force close一个为wait。

可能触发ANR的情况

1. 长时间的I/O处理,比如读写大文件,网络访问时造成的阻塞。

2. 执行耗时的运算,Android默认为超过5000ms即5秒开始弹出ANR窗口,某些应用可能首次执行时没有缓存十分耗时,可以通过Splash播放闪屏Logo等方式来延缓加载

3. Service和appWidget中也要注意多线程的使用,除非它和Activity工作在不同的进程。

避免ANR的方法

1. 单独开工作者线程,通过独立的Thread或使用类似AsyncTask的方式来处理耗时的内容。

2. 耗时的操作尽量分段处理,使用类似状态机的方法,类似Symbian的活动对象将一个复杂的事情,分段执行。

3. UI线程中不要处理过多的内容,比如将一个5MB的文本,让TextView去setText,要知道这种UI操作,没有什么好方法去解决的,所以遇到UI中需要执行复杂的操作,可以参考上面2提到的分段处理方式。

分享到:
评论

相关推荐

    Android学习笔记--Gson笔记

    这篇“Android学习笔记--Gson笔记”将深入探讨如何利用Gson来处理JSON数据,提升Android应用的数据解析效率。 一、Gson简介 Gson库能够将Java对象转换成对应的JSON字符串,反之亦然,这使得在Android应用中存储、...

    Android自学笔记-17-广播接收者(BroadcastReceiver)

    - 避免在onReceive()中执行耗时操作,因为这可能导致ANR(Application Not Responding)。 - 使用服务(Service)处理复杂的任务,以避免BroadcastReceiver的生命周期问题。 - 如果需要在应用未运行时接收广播,...

    黑马Android培训笔记

    笔记会介绍如何使用HttpURLConnection或OkHttp进行网络请求,以及如何处理异步任务,避免ANR(Application Not Responding)错误。 九、服务(Service) Service是后台运行的组件,常用于执行长时间任务。笔记将...

    Android代码-饭否客户端源码.zip

    源码中可能使用了Handler、AsyncTask、IntentService或现代的Coroutines、LiveData和Flow等技术来处理异步任务,理解这些工具的使用方法有助于避免ANR(Application Not Responding)问题。 6. **事件总线**:为了...

    Android笔记(5)---Activity生命周期

    如果在此期间执行耗时任务,应使用IntentService或AsyncTask,避免阻塞主线程导致ANR(Application Not Responding)错误。 六、Activity栈管理 Android使用任务(Task)和返回栈(FragmentStack)管理Activity。新启动...

    Android基础面试笔记

    - 避免在Android中使用`Enum`,因为它们消耗较多的内存资源。 - 减少`Bitmap`对象的内存占用,可以通过设置`inSampleSize`参数调整图像缩放比例,以及选择合适的解码格式。 - 减少资源图片的大小,例如使用`.9.png`...

    android 学习笔记5-线程阻塞 UI更新

    1、查看网络上的图片 2、主线程阻塞-ANR 3、刷新UI-Handler 4、在本地缓存图片-例如微信的图片 5、获取开源代码 6、显示一个新闻客户端 7、使用GET方式提交表单数据 8、使用POST方式提交表单

    Android开发教程&笔记

    - AsyncTask和Handler:处理UI线程与后台线程的交互,避免ANR(Application Not Responding)。 7. **权限管理** - Android 6.0(API级别23)以后,运行时权限模型:在应用运行时请求权限,提高用户体验。 - ...

    Android笔记:Socket客户端收发数据

    此外,由于Android应用的特性,网络操作通常应在子线程中执行,以避免阻塞主线程导致ANR(Application Not Responding)错误。你可以使用AsyncTask或者自定义Handler来实现异步通信。 在实际开发中,我们可能还需要...

    新版Android开发教程+笔记六--应用3、4+布局

    开发者需要理解如何避免阻塞主线程,以防止应用出现"ANR"(应用无响应)错误。 **布局设计** 1. **XML布局**: Android使用XML文件来定义UI布局,这种方式允许开发者分离视图逻辑和业务逻辑。你将学习到...

    Mono for Android和MonoDroid学习笔记全套

    9. **性能优化**:笔记可能会讨论如何优化代码以提高应用性能,减少内存占用,以及避免ANR(Application Not Responding)错误。 10. **发布与打包**:最后,笔记会指导如何生成APK文件,以及如何在Google Play或...

    超全android 中文教程 笔记

    此外,还会介绍如何使用Adapter与ListView、RecyclerView等来显示动态数据。 在编程语言方面,教程将涉及Java和Kotlin。Java是早期Android开发的主要语言,而Kotlin是Google推荐的现代Android开发语言,具有更简洁...

    Android最新面试题整理,有道云笔记格式

    这份"Android最新面试题整理,有道云笔记格式"的资料很可能包含了当前Android开发者在面试过程中可能会遇到的关键问题。以下是一些可能涵盖的知识点,以及它们的重要性: 1. **基础知识**:面试通常会从基础开始,...

    android学习笔记3

    8. **FragmentTransaction的最佳实践**:避免在主线程进行大量的Fragment操作,这可能导致ANR(应用无响应)。尽量使用异步操作或者在合适的时候调用`commitAllowingStateLoss()`。 9. **Fragment与Adapter的结合**...

    android培训笔记(超详细)

    【Android 开发环境的搭建】 Android开发环境主要由Android Studio、SDK(Software Development Kit)、JDK(Java Development ...注意,Handler、Looper和主线程之间的关系,避免内存泄漏和ANR(应用无响应)问题。

    Android 学习笔记

    最后,理解Android的进程和线程模型,以及如何使用Handler、Looper和AsyncTask来处理UI线程和后台线程的交互,可以避免“Application Not Responding”(ANR)错误,提升应用的响应速度。 在初学阶段,通过实践项目...

    android应用性能优化最佳实践读书笔记

    在Android应用开发中,性能优化是一项至关重要的任务,它直接影响到用户的体验和应用程序的市场竞争力。"Android应用性能优化最佳实践"这本书深入探讨了如何提升Android应用的性能,以下是一些核心知识点的总结: 1...

    Android系统下的视频硬解码MediaCodecDemo

    Android系统下的视频硬解码demo,调用系统api,android 4.1.2+系统可用,根据github上的代码改的,增加选择文件功能,共享给大家,方便研究。MediaCodec。 Github链接 -> https://github.com/vecio/MediaCodecDemo ...

    Android开发教程笔记完全版(实用1).zip

    这份名为"Android开发教程笔记完全版(实用1).zip"的压缩包文件包含了丰富的Android开发学习资源,非常适合那些正在进行毕业设计或课程设计的学生。这里,我们将深入探讨Android开发中的核心概念和技术,以便你能从中...

Global site tag (gtag.js) - Google Analytics