체인식 비동기 퀘스트류, 미혹의 축소 해결
어떤 구조가 체인식으로 여러 가지 점을 찍을 수 있는지 듣고 이 모델을 생각해 봤는데 실현하기 어렵지 않다고 생각해서 직접 체인식으로 비동기적인 임무를 썼다. 그리고 수시로 UI라인으로 되돌아갈 수 있고 다시 UI라인으로 되돌아갈 수 있다. 다시 UI라인으로 되돌아갈 수 있고 다시 UI라인으로 되돌아갈 수 있다. 쿠쿠, 방금 메모장으로 썼는데 뛸 수 있을지 모르겠다.내일 시험부터 붙여.
public class AsyncTask{
private String TAG = "AsyncTask";
private Thread thread;
private ArrayList tasks;
private MyRunnable mRunnable;
private Activity activity;
private ProgressListener listener;
private int taskCount;
private AsyncTask(Activity activity){
this.mRunnable = new MyRunnable();
this.tasks = new ArrayList<>();
this.activity = activity;
}
public static AsyncTask getInstance(Activity activity){
return new AsyncTask(activity);
}
public AsynoTask setProgressListener(ProgressListener listener){
this.listener = listener;
return this;
}
public AsynoTask doAsync(Task task){
this.tasks.add(task.setRunOnUiThread(fasle));
return this;
}
public AsyncTask doUI(Task task){
this.tasks.add(task.setRunOnUiThread(true));
return this;
}
public void start(){
this.thread = new Thread(runnable).start();
}
class MyRunnable implements Runnable{
@Override
public void run(){
taskCount = tasks.size();
for(int i = 0; i < taskCount; i++){
Task task = tasks.get(i);
if(task == null){
continue;
}
if(task.runOnUiThread && activity != null){
activity.runOnUiThread(task);
}else{
task.run();
}
if(listener != null){
listener.at(taskCount, i);
}
}
}
}
/**
* , Runnable ,
*/
public abstract class Task implements Runnable{
public boolean runOnUiThread;
Task setRunOnUiThread(boolean b){
this.runOnUiThread = b;
return this;
}
}
public interface ProgressListener{
void at(int taskCount, int done);
}
}
뛸 수 있을 것 같은데, 한 가지 불분명한 것은activity를 실행하고 있다는 것이다.runOnUiThread(task) 이후 바로 다음 라운드 순환에 들어갈지 여부, 고수가 있다면 바로잡아 주세요.
구체적인 용법은 분명히 볼 수 있을 것이니, 위조 코드를 써서 간단하게 표시해라
AsyncTask.getInstance(activity)
.setProgressListener(new ProgressListener(){
public void at(int taskCount, int done){
//do something
}
})
.doAsync(new Task(){
public void run(){
//do something
}
})
.doUI(new Task(){// })
.doAsync(new Task(){// })
.doUI(new Task(){// })
.start();
만약 이 종류가 정상적으로 뛸 수 있다면 후기에 다른 상태 감청 방법을 보완해야 한다. 예를 들어 onAllTaskFinished() 등이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.