Я пытаюсь периодически запрашивать информацию на определенном веб-сайте, а затем обновлять пользовательский интерфейс в приложении для Android.
Я настроил что-то похожее на следующее, но это кажется громоздким.Я предполагаю, что мои два конкретных вопроса будут такими:
Требуется ли view.post(new Runnable());
или обрабатываются широковещательные рассылки в потоке пользовательского интерфейса (что позволяет выполнять AsyncTask напрямую, поскольку это должно быть сделанопользовательский интерфейс)?
Есть ли способ периодически запускать AsyncTask (или что-то похожее), кроме настройки сигналов тревоги и получения Intents?
Вот упрощенная версия того, что я использую:
public class WebUpdates extends BroadcastReceiver
{
private AlarmManager am ;
private PendingIntent pi ;
private View view ;
private Context listener ;
public WebUpdates(Context listener, View view)
{
this.listener= listener;
this.view = view ;
am = (AlarmManager)listener.getSystemService(Context.ALARM_SERVICE) ;
pi = PendingIntent.getBroadcast((Context)listener, 0, new Intent("WEBUPDATE"), 0) ;
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, 0, (long)15000, pi) ;
}
@Override
public void onReceive(Context context, Intent intent)
{
view.post(new Runnable() {
public void run()
{
new WebUpdateTask().execute() ;
}
}) ;
}
private class WebUpdateTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... v)
{
// bunch of web stuff...
}
public void onPostExecute(Void v)
{
view.doBunchOfUpdates() ;
}
}
}
Это мой первый вопрос, поэтому я прошу прощения за любые проблемы с форматированием.Любой вклад или помощь будет высоко ценится!