android实现异步的问题小经验总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    }

 

以上是关于android实现异步的问题小经验总结的主要内容,如果未能解决你的问题,请参考以下文章

Android课程---Android Studio使用小技巧:提取方法代码片段

Android小部件,启动一个片段?

VS中添加自定义代码片段——偷懒小技巧

android小知识点代码片段

Android 我应该在异步任务中将片段作为弱引用传递吗?

Android - 为列表视图填充适配器的异步任务