0
在我的Nexus One(Android的2.3.3)下面的程序從我的XOOM(Android 3.2的)行爲有所不同:的AsyncTask和onclicklistener的Android 2.3.3與3.2
public class TestOnclickWithAsyncTask extends Activity {
private int mClicked = 0;
private final static String TAG = "TestOnclickWithAsyncTask";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RelativeLayout relativeLayout= (RelativeLayout) findViewById(R.id.img_control_panel);
final Button button = new Button(this);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mClicked++;
Log.i (TAG, "Clicked "+ mClicked + " times");
}
});
relativeLayout.addView(button);
new LongTask().execute();
}
private class LongTask extends AsyncTask<Void , Void, Void> {
private ProgressDialog dialog;
protected void onPreExecute() {
dialog = new ProgressDialog(TestOnclickWithAsyncTask.this);
dialog.setMessage("Waiting ");
dialog.setIndeterminate(true);
dialog.setCancelable(true);
try {
dialog.show();
} catch (Exception e){}
}
protected Void doInBackground(Void... notused) {
try {
Thread.sleep (30000);
} catch (InterruptedException e) {
e.printStackTrace();
}//do long task
return null;
}
protected void onPostExecute(Void unusedg) {
dialog.dismiss();
Log.i (TAG,"Long task finished");
}
}
}
在我的Nexus我不能按同時的AsyncTask運行(期望的行爲)按鈕:
09-26 00:45:34.361: INFO/TestOnclickWithAsyncTask(3803): Long task finished
09-26 00:45:36.463: INFO/TestOnclickWithAsyncTask(3803): Clicked 1 times
09-26 00:45:36.814: INFO/TestOnclickWithAsyncTask(3803): Clicked 2 times
09-26 00:45:37.975: INFO/TestOnclickWithAsyncTask(3803): Clicked 3 times
09-26 00:45:38.435: INFO/TestOnclickWithAsyncTask(3803): Clicked 4 times
在我的XOOM我只需按下按鈕和進度指示器消失。
09-26 00:49:05.440: INFO/TestOnclickWithAsyncTask(5887): Clicked 1 times
09-26 00:49:06.230: INFO/TestOnclickWithAsyncTask(5887): Clicked 2 times
09-26 00:49:06.580: INFO/TestOnclickWithAsyncTask(5887): Clicked 3 times
09-26 00:49:06.840: INFO/TestOnclickWithAsyncTask(5887): Clicked 4 times
09-26 00:49:08.170: INFO/TestOnclickWithAsyncTask(5887): Clicked 5 times
09-26 00:49:08.560: INFO/TestOnclickWithAsyncTask(5887): Clicked 6 times
09-26 00:49:30.960: INFO/TestOnclickWithAsyncTask(5887): Long task finished
09-26 00:49:32.800: INFO/TestOnclickWithAsyncTask(5887): Clicked 7 times
09-26 00:49:33.810: INFO/TestOnclickWithAsyncTask(5887): Clicked 8 times
這是爲什麼不同?更重要的是,如何防止xoom取消進度對話框?
或者至少記錄異常,所以如果它失敗,你知道它! – dmon
1.糟糕,刪除了setCancelable(true),但這並沒有解決問題。 2.你是完全正確的,我至少應該記錄例外,但是這也沒有透露任何東西。 –
對話框出現後,您單擊背景(所以按鈕)和對話框消失,以便您可以單擊按鈕?這是怎麼回事?那真的很奇怪。 (...對不起,我現在真的必須睡覺,沒有睡過夜) – Knickedi