Android:JAVA 中线程上的任务顺序
Android: Task sequential on a thread in JAVA
有 BroadcastReceiver
收到动作事件并需要按顺序执行它们的用例。
这里Event1和Event2可以背靠背接收。必须完成 Event1 工作,然后才能开始 Event2 工作。
如何使其顺序化?
BroadcastReceiver{
onReceive(){
Event1:
Task1 doing Something different.//Cant run network operations here.
Event2:
Task2 doing Something different.//Cant run network operations here.
}
}
executors.newsinglethreadexecutor()
或 handlerthread
是我正在寻找的选项..还有其他好的方法吗?
我有一个解决方案但是我不知道是否有比这个更好的解决方案
好吧至少它有效
在您的事件中使用 Asyntask
public class Event1 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event 1 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//call Event2
Event2 event2=new Event2();
event2.execute();
}
}
public class Event2 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event 2 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//call Event3
Event3 event3=new Event3();
event3.execute();
}
}
public class Event3 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event3 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//everything would come after Event 3 write it here
}
}
发现executors.newsinglethreadexecutor()或handlerthread都可以处理顺序任务..
有 BroadcastReceiver
收到动作事件并需要按顺序执行它们的用例。
这里Event1和Event2可以背靠背接收。必须完成 Event1 工作,然后才能开始 Event2 工作。
如何使其顺序化?
BroadcastReceiver{
onReceive(){
Event1:
Task1 doing Something different.//Cant run network operations here.
Event2:
Task2 doing Something different.//Cant run network operations here.
}
}
executors.newsinglethreadexecutor()
或 handlerthread
是我正在寻找的选项..还有其他好的方法吗?
我有一个解决方案但是我不知道是否有比这个更好的解决方案
好吧至少它有效
在您的事件中使用 Asyntask
public class Event1 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event 1 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//call Event2
Event2 event2=new Event2();
event2.execute();
}
}
public class Event2 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event 2 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//call Event3
Event3 event3=new Event3();
event3.execute();
}
}
public class Event3 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event3 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//everything would come after Event 3 write it here
}
}
发现executors.newsinglethreadexecutor()或handlerthread都可以处理顺序任务..