zoukankan      html  css  js  c++  java
  • android实现异步的问题小经验总结

    1、如下图所言,必须在UI线程中调用异步任务的子类

    2、经过碰壁 测试

    1--、方法一中
     @Override
                public void onClick(DialogInterface dialog, int which)
                {Thread thread=new Thread(new Runnable() {
                    @Override
                    public void run()
                    {
    
                        uploaddd();
    
                    }
                });
                   thread.start();
    2--、方法二中
      private void uploaddd()
        {
            final Handler handler=new Handler()
            {
                public void handleMessage(Message msg)
                {
                    if(msg.what==1)
                    {
                        Log.d("DFDFDFDF",ii+"__"+"haode");              
    
                    }
                }
            };
            Thread thread =new Thread(new Runnable()
            {
                @Override
                public void run()
                {
                    Log.d("DFDFDFDF",ii+"__");
                    handler.sendEmptyMessage(1);
                }
            });
            thread.start();
        }

    上述代码会挂掉 证明得出 在非UI中 调用的方法继续开启线程同时有Handler机制会出现异常(因为Handler是异步机制)

    实验得出下述代码不会出现异常

    1--
     @Override
                public void onClick(DialogInterface dialog, int which)
                {Thread thread=new Thread(new Runnable() {
                    @Override
                    public void run()
                    {
    
                        uploaddd();
    
                    }
                });
                   thread.start();
    
    
    2--
     private void uploaddd()
        {
    //        final Handler handler=new Handler()
    //        {
    //            public void handleMessage(Message msg)
    //            {
    //                if(msg.what==1)
    //                {
    //                    Log.d("DFDFDFDF",ii+"__"+"haode");
    ////                    if(AndroidClient._error_uploadScrapImgFile.intern()!="")
    ////                    {
    ////                        Toast.makeText(ActivityScrap.this,AndroidClient._error_uploadScrapImgFile,Toast.LENGTH_SHORT).show();
    ////                    }
    //                }
    //            }
    //        };
            Thread thread =new Thread(new Runnable()
            {
                @Override
                public void run()
                {
                    Log.d("DFDFDFDF",ii+"__");
                    AndroidClient.uploadScrapImgFile(scrapImgDatas,ii+"__");
                    //handler.sendEmptyMessage(1);
                }
            });
            thread.start();
        }
  • 相关阅读:
    A+B for Input-Output Practice (VIII)
    A+B for Input-Output Practice (VI)
    A+B for Input-Output Practice (VII)
    A+B for Input-Output Practice (IV)
    1.1.4 A+B for Input-Output Practice (V)
    1.1.3 A+B for Input-Output Practice (III)
    基础练习 龟兔赛跑预测
    基础练习 回形取数
    Python实用黑科技——以某个字段进行分组
    Python黑科技神奇去除马赛克
  • 原文地址:https://www.cnblogs.com/JLZT1223/p/6830290.html
Copyright © 2011-2022 走看看