Я пытаюсь повторно инициировать всю функцию загрузки и uppdate-сервиса, когда AsyncTask в моей активности вызывается, но я не уверен, что я делаю что-то неправильно. В настоящее время у меня есть кнопка обновления, который инициирует AsyncTask:Android Refreshing Service после AsyncTask
Обновить функцию, которая инициирует AsyncTask:
final ImageView refreshBtn= (ImageView) findViewById(R.id.spin_refresh);
Log.i("RootActivity:setupHeader","******ImageView refreshBtn******");
//Listening to Button Click by User
refreshBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("RootActivity:setupHeader","******OnClick,Call RefreshTask******");
//CALL ON THE CLASS OF REFRESHTASK ASYNCTASK
RefreshTask refreshtask = new RefreshTask();
refreshtask.execute();
}
});
После того, как моя функция обновления называется, он будет вызывать на refreshtask в моей деятельности:
public class RefreshTask extends AsyncTask <Void,Integer,Long> implements Observer{
// SET THE PARAMETERS FOR REFRESHTASK IN ASYNCTASK: PRE-EXECUTION, PROGRESS UPDATES & POST-EXECUTION
private Context context=null;
private DownloadService callback =null;
protected boolean exitAsync = false;
public static Hashtable<String, Download> downloadList;
final public static String PATH = "/sdcard/DCIM/100MEDIA/";
private static final Long START_STICKY = null;
Intent intent;
ListView lv;
RelativeLayout rl;
protected String dSResponse = null;
public void UIThreadProgress(Context context, DownloadService callback) {
this.context = context;
this.DownloadService = DownloadService;
}
//PROCESS IN CALLING THE DOWNLIST WHILE IN BACKGROUND
protected Long doInBackground(Void...params){
// TODO Auto-generated method stub
Log.i("----------RefreshAsyncTask----------", "doInBackground");
try {
// ====================DownloadService
Thread.sleep(10000);
while (this.callback.condition())
Intent i= new Intent(context.this, UpdateService.class);
Intent I= new Intent(context.this,DownloadService.class);
// potentially add data to the intent
context.this.startService(i);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}while (!exitAsync);
return START_STICKY;
}
@Override
public void update(Observable observable, Object data) {
// TODO Auto-generated method stub
//UpdateServiceStatus
}
//HANDLES EVENTS ON THE UI-POST-EXECUTE
@Override
protected void onPostExecute(Long result){
super.onPostExecute(result);
lv.findViewById(R.id.spin_refresh).setVisibility(View.VISIBLE);
Log.i("----------RefreshAsyncTask----------", "onPostExecute");
//GIVE FEEDBACK ON THE USER INTERFACE
Toast.makeText(context, "Your document has been refreshed and contains the updated documents!", Toast.LENGTH_LONG).show();
// After the process in doInBackground has been completed
}
}
Пожалуйста, помогите, я пытаюсь повторно создать экземпляр службы загрузки и обновления при вызове AsyncTask.
Чувак, если AsyncTask было сделано при условии, что будет прекращено только тогда, когда оба ваших UpdateService и заканчивается там Сервис загрузки работу, то вы так неправильно здесь. сначала ваш AsyncTask будет termniate сразу после запуска службы, поэтому, имея AsyncTask, просто чтобы запустить пару служебных звуков, лишних для меня. – Techfist
@Techfist UpdateService и DownloadService запускаются только один раз, то есть когда приложение запускается впервые. Следовательно, я пытаюсь использовать AsyncTask для вызова другого вызова функции из DownloadService и UPdateService, когда нажата кнопка обновления. –
@Techfist Как Async завершает работу, когда я попытался вызвать 2 сервера для запуска в фоновом режиме? –