1,ANR异常的解释:

ANR(android not response)即应用程序无响应,在用户操作在5秒内没有响应的话就会出现ANR异常;

2,那为什么会出现ANR异常呢?

Android系统中处理用户操作的工作在主线程中执行,如果我们在主线程中执行很耗时的操作,并且导致用户的操作没有在5秒钟内得到响应,哪儿嘛就会导致ANR异常的出现。主线程休眠,那么再点击程序,必须等主线程睡醒后才会有反应。所以在主线程中不能行耗时操作,因为主界面会被阻塞。

3,解决方案:

凡是耗时操作都不要放在主线程里面,要单独开辟一个线程,然后在子线程中利用Handler传递消息,通知主线程更新UI主界面。比如连网的事情都要放在子线程里面。

解决代码(包括更新界面的操作,使用的是handler)

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

    private TextView numTV;
   private Handler handler = new Handler();
   private int i;
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);        numTV = (TextView) findViewById(R.id.numTV);
   }    public void doSomething(View view) throws Exception {
       new Thread() {
           public void run() {
               for (i = 1; i < 20; i++) {
                   handler.post(new Runnable() {
                       public void run() {
                           numTV.setText(i + "");
                       }
                   });
                   System.out.println(i);
                   try {
                       Thread.sleep(1000);
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
               }
           };
       }.start();
   }    public void toast(View view) {
       Toast.makeText(this, "云哥(马云)要来我们学校做演讲啦!", 0).show();
   }
}

最新文章

  1. MailKit系列之---查询SearchQuery
  2. centos7+redis+php环境配置
  3. MAVEN for mac 安装
  4. 【Unity】13.1 场景视图中的GI可视化
  5. ARM状态和THUMB状态
  6. [LeetCode]题解(python):039-Combination Sum
  7. gulp教程
  8. Java 集合系列 17 TreeSet
  9. codedorces 260 div2 A题
  10. C#创建XML文件并保存
  11. Spring事务配置的五种方式 巨全!不看后悔,一看必懂!
  12. Extjs6(二)——用extjs6.0写一个系统登录及注销
  13. Chipmunk僵尸物理对象的出现和解决(七)
  14. BZOJ2527[Poi2011]Meteors——整体二分+树状数组
  15. win10自动更新后SQLServer无法启动的问题排查
  16. 黑盒测试实践——day01
  17. 软件毕业设计文档流程与UML图之间的关系
  18. 【APP测试(Android)】--交叉事件
  19. sublime 格式化react插件配置教程 jsfmt配置
  20. Java学习笔记:数据校验

热门文章

  1. aspnet中通过多条件筛选来显示数据的实现
  2. linux 下的文件目录操作之遍历目录
  3. nodejs项目管理之supervisor||pm2||forever
  4. Linux文件系统的层级结构
  5. Spring 笔记总结
  6. 如何把项目上传到GitHub上
  7. 【20171025中】alert(1) to win 脚本渲染自建
  8. iOS之 git 简单使用
  9. 笔记-测试崩溃之memcpy_s
  10. js判断是否使用的是微信浏览器