java - Android间隔较短的定时刷新任务怎样做会更好?
天蓬老师
天蓬老师 2017-04-17 16:18:49
0
3
406

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

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

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

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

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

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复 (3)
黄舟

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

    Ty80

    需要用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) { //活儿 } }
      阿神

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

        最新下载
        更多>
        网站特效
        网站源码
        网站素材
        前端模板
        关于我们 免责声明 Sitemap
        PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!