zoukankan      html  css  js  c++  java
  • 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();
        }
    }

  • 相关阅读:
    jdbc调用存储过程和存储函数
    jdbc测试
    JDBC -JSP
    eclipse连数据库(sql server)的注意事项
    九大内置对象(新)
    application 全局对象
    编码:session
    建库和建表
    db vs dbm
    Source Insight异常退出,错误代码C0000005
  • 原文地址:https://www.cnblogs.com/zhengjunfei/p/4716258.html
Copyright © 2011-2022 走看看