標籤:bsp error hand 方法 public -- div runnable new
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實現非同步問題小經驗總結