我声明了一个Service类:
public class MyService extends Service{
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Parsing().execute();
return Service.START_STICKY;
}
private class Parsing extends AsyncTask<Void, Void, Void> {
List<MyObject> myList = null;
MyAdapter adapter = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
myList = new ArrayList<MyObject>();
}
@Override
protected Void doInBackground(Void... params) {
while (downloadDataFromInternet)
myList.add(new MyObject(par1, par2, par3, par4));
}
@Override
protected void onPostExecute(Void result) {
if (myList.size() > 0)
adapter = new MyAdapter(this, myList);
}
}
}现在,我希望每10分钟(例如)在activity处于后台时执行一次此服务,但我希望当activity返回到前台时,MyFragment的listView将使用服务中声明的适配器。你能帮帮我吗?我不知道该怎么做。
发布于 2015-06-11 20:37:26
如果必须在10分钟间隔内准确执行服务,则返回
。您可以使用线程调度程序,如下所示:
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//schedule a thread
scheduler.schedule(new Runnable() {
public void run() {
startservice();
}
}, 10, TimeUnit.MINUTES);
return Service.START_STICKY;
}
private startService(){
// you background service related work
while (downloadDataFromInternet)
myList.add(new MyObject(par1, par2, par3, par4));
// schedule a new thread
scheduler.schedule(new Runnable() {
public void run() {
startservice();
}
}, 10, TimeUnit.MINUTES);
}https://stackoverflow.com/questions/30780582
复制相似问题