简述anr异常和解决方案

什么是ANR 如何避免它 

答:Application not Responding(程序无应答)

1)主线程中尽量少做操作

2)对繁琐的功能代码分段完成

3)潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。

线程之间的通信方式(如何避免ANR)

(1). AsyncTask,其中doInBackground()和onPostExecute(Result)两个方法非常重要

doInBackground() 这个方法运行在后台线程中,主要负责执行那些很耗时的操作,如访问网络。该方法必须重写。

onPostExecute(Result) 这个方法运行于UI主线程,在doInBackground(Params…)方法执行后调用,该方法用于接收后台任务执行后返回的结果,刷新UI显示。

(2.)子线程 + handler

在子线程中执行完耗时操作需要刷新UI时,通过handler.sendMessage()发消息给主线程, 然后在主线程Handler中的handleMessage()方法中执行刷新UI操作

 Android 中ANR异常的处理方法 :( 意思是: 应用程序没有响应 ) 

有两种情况会报ANR:  自己添加的

1.主线程在5秒内没有响应输入事件(事件处理/UI线程)

2.广播在10秒内没有完成返回( BroadcastReceiver)

下面是导致android中出现ANR异常的的情况:

1.在主线程内进行网络操作

2.在主线程内进行一些缓慢的磁盘操作(例如执行没有优化的SQL查询)

处理的逻辑是:

1.New一个新的线程,进行数据请求

2.获取数据后,调用handler.sendmessage方法

3.在handler的handle()方法中更新UI

// Android 如何指定浏览器访问 指定页面?

指定action 及 uri 就可以访问制定好的 浏览器了

 

 

1>简而言之: 一个程序至少有一个进程,一个进程至少有一个线程

2>线程的划分尺度小于进程,使的多线程程序的并发性高

3>进程在执行的过程中拥有独立的内存单元,而多个线程共享内存,从而提高了程序的运行效率

4>每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

5>多线程的意义在于一个应用程序中,有多个执行部分可以同时执行,  但是操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理及分配资源,这就是进程和线程的重要区别

什么是ANR

ANR:Application Not Responding(应用程序无响应).当在某个应用主线程出现下列情况时,就会显示ANR对话框了:用户在进行了一种操作后5秒钟没有响应,BroadcastReceiver所进行的操作在10秒内没有完成,Service在20秒内没返回结果。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR,比如访问网络,SD卡读写,Sqlite数据库增删改查等。

 

15. 如何避免ANR (线程间通讯的两种方式是什么)

1.AsyncTask,其中doInBackground()和onPostExecute(Result)两个方法非常重要

doInBackground()这个方法运行在后台线程中,主要负责执行那些很耗时的操作,如访问网络。该方法必须重载。

onPostExecute(Result)这个方法运行于UI主线程,在doInBackground(Params…)方法执行后调用,该方法用于接收后台任务执行后返回的结果,刷新UI显示。

2.  子线程 + handler

在子线程中需要刷新UI时通过handler.sendMessage()发消息给主线程, 然后在主线程Handler中的handleMessage()方法中执行刷新UI操作



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值