基本上,我必須把代碼,我想在doInBackground內的另一個線程上運行,或者我可以調用另一個函數/類/任何它是函數被調用-JAVA在doInBackground中並讓它異步運行? IE:(示例代碼我在網上找到)AsyncTask調用類中的另一個函數
protected String doInBackground(String... params) {
for(int i=0;i<5;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
return null;
}
是我見過它做的,但我可以改爲做:
protected String doInBackground(String... params) {
postToServer(x,y,z,h);
}
,並調用它,我已經寫了一個函數,然後有函數在另一個線程中運行?有時候,我的HTTP服務器響應速度有點慢(它現在只是一個低性能的服務器),如果我的postToServer()調用需要超過5秒鐘,Android會自動彈出殺死進程框,還會禁用我的用戶界面直到postToServer()調用完成。這是一個問題,因爲我正在開發一個GPS跟蹤應用程序(內部爲我工作的公司)和用戶界面選項關閉凍結跟蹤直到我的postToServer()完成,這有時並不會發生。如果這個問題得到解答,我表示歉意,我嘗試過搜索,但還沒有找到任何能夠按照我希望完成這項工作的方式工作的例子。
一個方法總是在調用者的線程中執行。直接調用不能切換線程。 – zapl