활동을 시작하고 사용자가 로그인하면 주요 활동을 새로 고침하고 싶습니다. 로그인 한 사용자로부터 데이터를로드하려면.다른 작업에서 asyncTask를 새로 고치는 방법은 무엇입니까?
이미지 및 이름 등. 나는 이미이 모든 것을 준비했다.
다른 활동을 시작하고 비동기 작업을 다시 실행할 수 있다는 것을 알아야합니다. 다른 활동 내부에서 의도를 시작하는 것부터 시작해야할까요?
활동을 시작하고 사용자가 로그인하면 주요 활동을 새로 고침하고 싶습니다. 로그인 한 사용자로부터 데이터를로드하려면.다른 작업에서 asyncTask를 새로 고치는 방법은 무엇입니까?
이미지 및 이름 등. 나는 이미이 모든 것을 준비했다.
다른 활동을 시작하고 비동기 작업을 다시 실행할 수 있다는 것을 알아야합니다. 다른 활동 내부에서 의도를 시작하는 것부터 시작해야할까요?
디자인이 정확히 무엇인지는 명확하지 않지만, 두 가지 다른 활동에서 동일한 AsyncTask를 사용해야하는 경우 특정 활동에 묶여 있지 않고 별도의 클래스 여야합니다. AsyncTask가 업데이트중인 활동을 알 필요가 없도록 두 개의 활동에 공통 인터페이스를 구현하게 할 수 있습니다. 그런 다음, 둘러싼 활동에 대한 참조를 전달하여 태스크를 인스턴스화하고 필요에 따라 시작하십시오. 하나의 활동이 다른 활동을 시작할 필요가 없습니다. 같은
뭔가가 :
지금까지 내가 알고 있어요으로public interface UserActivity {
void updateUserData(UserData userData);
}
public class Activity1 implements UserActivity {
public void onStart() {
UpdateUserDataTask task = new UpdateUserDataTask(this);
task.execute();
}
public void updateUserData(UserData userData) {
// update
}
}
public class UpdateUserDataTask extends AsyncTask<Void, Void, UserData> {
UserActivity userActivity;
public UpdateUserDataTask(UserActivitiy userActivity) {
this.userActivity = userActivity;
}
// doInBackground, etc implementation.
protected void onPostExecute(UserData userData) {
userActivity.updateUserData(userData);
}
}
, AsyncTasks은 재사용 안된다. 그들은 한 번 실행해야하고, 필요하다면 새로운 것을 만들 수 있습니다.
귀하의 권리,하지만 내가 뭘하려고하면 몇 가지 정보가 다른 활동에서 사용할 수있는 활동을 새로 고치는 것입니다. –
AsyncTask
이 한번 실행되면 다시 실행할 수 없습니다. 그래도 할 수있는 일은 다음과 같이 onProgressUpdate()
및 publishProgress()
을 사용하여 "새로 고침"제어입니다. 이 기능은 한 번만 새로 고침하는 경우에만 작동합니다. 보다 의미 론적으로보고 싶다면 onProgressUpdate()
에서 "normal"연산을 수행하고 새로 고침에는 onPostExecute()
을 사용할 수 있습니다.
public class MyAsyncTask extends AsyncTask<Void, String, Void> {
private boolean isRefresh = false;
@Override
protected Void doInBackground(Void... arg0) {
while (!isRefresh){
//Perform your normal operation
}
//When isRefresh is true, you want to refresh.
this.publishProgress(values);
return null;
}
@Override
protected void onProgressUpdate(String... values) {
// Refresh code here
super.onProgressUpdate(values);
}
public void refreshTask(){
this.isRefresh = true;
}
}
그런 다음 MyAsyncTask
의 객체에 대한 참조를 유지하고 당신이 그것을 새로 고침 할 때마다에 refreshTask()
를 호출 할 수있다.
무슨 뜻인지 예를 보여줄 수 있습니까? –
코드 예제의 업데이트 된 게시물보기 –
다른 활동에서 인터페이스를 시작하려면 어떻게해야합니까? –