首页 > Android间隔较短的定时刷新任务怎样做会更好?

Android间隔较短的定时刷新任务怎样做会更好?

举个例子,腾讯自选股的这个列表里的数据,可以每隔几秒就刷新一次。

我目前的考虑是作为一个定时任务,任务内容就是发起网络请求去服务器拿新的数据。我自己这边的思路有以下三个:

  1. 新建TimerTimerTask,然后用timer.schedule(timerTask, 0, 5000);启动。不过,我不太清楚Timer用于Android里是否会有一些弊端。

  2. 新建一个Service,然后在Service内使用AlarmManager发起定时广播,并在对应的BroadcastReceiver里再次启动Service。 通过这样的循环来实现定时任务,

  3. 新建一个Service,通过这个Service和服务器建立持久化的连接,然后由服务器来推送消息。不过,我对Android里这个做法还不太了解,这里持久连接是WebSocket吗?大概怎样的实现过程?

请问哪一种思路会更合适?


这种需求当然是TimeTask要好一点,用socket有点浪费资源了,毕竟你是定时的,不像推送那样我们不知道他什么时候更新。 要注意的一点是,当程序在后台工作时记得把TimeTask暂停。不然一直跑流量,用户体验不行


需要用AlarmService
用普通Timer 会在待机的时候中断。
并且类型需要设置为AlarmManager.ELAPSED_REALTIME_WAKEUP

调用

Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(),
     0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
    System.currentTimeMillis(), 10*1000, pendingIntent);

另起一个类

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //活儿
    }
}

也可以用handlerpostDelay,在handler的handleMessage里面继续postDelay,在Service或者Activity退出的时候,记得removeCallback就行了

【热门文章】
【热门文章】