我有两个不同的类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