Android两种常见错误(ANR和FC)解决办法

ANR(Activity Not Respone)(无响应)html

    先介绍下Main线程(也称为UI线程、主线程)web

    功能: 1.建立UI控件json

             2.更新UI控件状态网络

             3.事件处理post

    限制:Main线程不建议有超过5秒的事件ui

    出现条件:spa

        当用户输入事件5s内没有获得响应,将弹出ANR对话框线程

        广播接收者的onReceive()执行时间超过10s日志

    解决方案(原则):orm

        全部可能的耗时操做都要在子线程()中执行

        常见耗时操做:

            I/O:网络操做

                   SDcard 

            数据运算


FC(Force close)

    缘由:

        1.Error

        OOM(out of memory error)

        StackOverFlowError

        2.RuntimeException

    解决办法:

        看日志


    子线程不能更新UI的解决思路:

       一、 将子线程执行结果发送到Main线程:handler+massage线程间通信

            发送消息:

                        Message msg = mHandler.obtainMessage(UPLOADjson);    

                        mHandler.sendMessage(msg);

            接收消息:

        public void handleMessage(Message msg) {

            switch (msg.what) {

            case UPLOAD:

                mTextView2.setText((String) msg.obj);

            break;

            case DOWNLOAD:

                mTextView.setText((String) msg.obj);

                break;

            default:

                break;

            }

        }


      二、 使更新ui代码段在Main线程执行:

        1.runOnUiThread

        2.view.post view.postDelay()

        3.handler.post handler.postDelay()


参考:

http://www.cnblogs.com/mengdd/p/3418780.html

相关文章
相关标签/搜索