A N R :

Application Not Responding : 应用没有响应异常

引发ANR的原因是,组件的主线程去执行了耗时操作多少秒,就会引发ARN异常;

引发ANR异常的案例:

package com.example.administrator.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); for (int i = 0; i < 10; i++) {
try {
Thread.sleep(10000); } catch (InterruptedException e) {
e.printStackTrace();
}
} Toast.makeText(this, "onCreate执行完毕.....", Toast.LENGTH_SHORT).show(); }
}

执行结果:此ANR异常时Android操作系统报出的,操作系统检测到组件被阻塞,认为此应用,需要结束掉了 

线程执行图:


解决方案:

在组件的主线程加入子线程,保证不影响主线程,保证不阻塞主线程,只要保证组件的主线程正常运行就不会引发ANR异常

package com.example.administrator.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); /**
* 增加子线程执行耗时操作,保证主线程正常运行
*/
new Thread(){ @Override
public void run() {
super.run(); for (int i = 0; i < 10; i++) {
try {
Thread.sleep(10000); } catch (InterruptedException e) {
e.printStackTrace();
}
} }
}.start(); /**
* 增加了子线程 后 不影响组件的主线程运行
*/ // 提示
Toast.makeText(this, "onCreate执行完毕.....", Toast.LENGTH_SHORT).show(); }
}

执行结果,增加了子线程就不影响主线程运行了,从而就不会引发ANR异常:

 线程执行图:

Android-ANR异常的更多相关文章

  1. Android ANR异常解决方案

    1,ANR异常的解释: ANR(android not response)即应用程序无响应,在用户操作在5秒内没有响应的话就会出现ANR异常: 2,那为什么会出现ANR异常呢? Android系统中处 ...

  2. Android ANR异常及解决方法

    1,首先是查看log: 2,再看trace.txt; 3,看源码: 4,仔细分析ANR的原.

  3. android ANR产生原因和解决办法

    转自http://blog.sina.com.cn/s/blog_618199e60101kvbl.html ANR (Application Not Responding) ANR定义:在Andro ...

  4. android ANR产生原因和解决办法【转】

    ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(AN ...

  5. Android ANR分析及解决方案

    一:什么是ANR ANR:Application Not Responding,即应用无响应. ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个 ...

  6. Android ANR、Force Closed(转)

    ANRs (“Application Not Responding”),意思是”应用没有响应“. 在如下情况下,Android会报出ANR错误: – 主线程 (“事件处理线程” / “UI线程”) 在 ...

  7. Android ANR的产生与分析

      ANR即Application Not Responding应用无响应,一般在ANR的时候会弹出一个应用无响应对话框.也许有些开发者在使用某些手机开发中不在弹出应用无响应弹出框,特别是国产手机An ...

  8. [转]android ANR产生原因和解决办法

    ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(AN ...

  9. ANR异常

    ANR异常 一.简介 解决方法:别在主线程中写非常耗时的操作 二.代码实例 点击之后,不停点击,乱点 出现anr异常 代码 /anr/src/anr/MainActivity.java package ...

  10. Android ANR原因以及开发时如何预防

    经常可以在Android系统上发现ANR异常响应的问题.故了解一下ANR出现的原因 一. Android系统中,应用程序的响应是由ActivityManager 和 WindowManger系统服务监 ...

随机推荐

  1. ubuntu12.04下安装Apache+PHP+MySQL

    一.Apache1.安装apache2: sudo apt-get install apache2 2.重启apache2: sudo /etc/init.d/apache2 restart 3.在浏 ...

  2. 存储过程和函数 PROCEDURE & FUNCTION

    SQL语句执行的时候,要首先编译,然后在被执行.在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行. 具体而言 ...

  3. String、StringBuffer、StringBuilder和StringTokenizer的区别

    1)String.StringBuffer.StringBuilder都用于字符串操作,其中,String是不可变类,即String对象一旦被创建,其值不能被修改,而StringBuffer和Stri ...

  4. PHP 过滤特殊符号

    function strFilter($str){ $str = str_replace('`', '', $str); $str = str_replace('·', '', $str); $str ...

  5. js实现多标签页效果

    点击导航按钮切换div的内容 html代码: <div class="tabs"> <ul id="tab"> <li>&l ...

  6. 记录点复习题目和linux学习

    哈希怎么底层.key放数组哪部分里面 HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体. 开网页怎么获取页面 linux 看进程的cpu 和内存占用率 看哪个端口被占用     ...

  7. 使用django发送邮件(smtp)

    首先在 seeting 最下面+上 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_USE_TLS = False ...

  8. main.cpp

    /*main.cpp * *The starting point of the network simulator *-Include all network header files *-initi ...

  9. oracle compile 编译无效对象

    原博主:http://blog.csdn.net/tianlesoftware/article/details/4843600 Applies to: Oracle Server - Enterpri ...

  10. centos7,系统目录结构

    LINUX有四种基本文件系统类型 普通文件: 如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等,可用cat.less.more.vi.emacs来察看内容,用mv来改名. 目录文件: 包 ...