我是靠谱客的博主 兴奋时光,最近开发中收集的这篇文章主要介绍Android ANR异常解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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();
   }
}

转载于:https://www.cnblogs.com/zhengjunfei/p/4716258.html

最后

以上就是兴奋时光为你收集整理的Android ANR异常解决方案的全部内容,希望文章能够帮你解决Android ANR异常解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部