您的位置:首页 > 移动开发 > Android开发

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

2017-05-09 13:54 190 查看
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: