我有兩個不同的類2個AsyncTasks但問題是當第一是在不執行所述第二backgroung狀態做。第一個asyncTask如果在循環中執行,因爲它需要每5秒更新一次新數據。如果我停止任務(condition = flase),那麼第二個完美的工作。執行兩個的AsyncTask在兩個不同的類
第一類:
public class MapScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_screen);
UpdateUserCords updateUC = new UpdateUserCords();
updateUC.execute();
}
class UpdateUserCords extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... params) {
while(condition)
{
//some code in loop...
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
}
二等:
public class Groups extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_groups);
getGroups getGr = new getGroups();
getGr.execute(); //not executing, no error or crash
}
class getGroups extends AsyncTask<String, Void, String>
{
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
@Override
protected String doInBackground(String... params) {
//some code...
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
}
謝謝,但我認爲串行執行程序比ThreadPoolExecutor更好,如果它在更新的API版本中。它可能會導致代碼問題或執行速度緩慢? – Dim
這不是一些執行者比另一個更好,他們有不同的角色。串行執行程序意味着只有一個任務將在同一時間運行(這是默認設置,因爲我記得,他們選擇它作爲默認值,因爲很多人沒有與多線程相處)。 ThreadPool執行器意味着許多任務可以在同一時間運行,並且這是您希望實現的行爲,所以這是您需要用來實現它的執行器,非常簡單。 – Elad92
它的工作原理,謝謝Elad! – Dim