您好,匿名用户
随意问技术百科期待您的加入

android如何后台运行定时方法

0 投票

应用有个需求,是定时去服务器获取一个账号是否有新的动态。
就像新浪微博那种,打开客户端,会自动提示有多少个 @ 。
我现在想到的方案是这样:

Timer timer = new Timer(); timer.scheduleAtFixedRate(
    new TimerTask() {
        public void run() {
            try {
                checkEvent();
                Thread.sleep(1000);
            } catch (Exception ie) {
            }
        }
    }, 1000, 1000 * 30);

不知道还有没有别的更合理的方案
我这样做会不会有什么风险?
求有经验的大侠分享。。。

用户头像 提问 2012年 12月1日 @ Sion 上等兵 (319 威望)
分享到:

1个回答

0 投票
 
最佳答案
public class RepeatTaskScheduler extends BroadcastReceiver {

    public static final String ACTION = "com.yourcompanyname.appname.action.RepeatTaskSchedule";

@Override
    public void onReceive(Context context, Intent intent) {
        if (ACTION.equals(action)) {
            checkEvent();
        }
    }
}
//在你想要的地方启动
public class YourActivity extends Activity{
    @Override
    public void onCreate() {
        super.onCreate();
        //如果interval的值太大会失效,几个小时没问题
        setRepeatTasks(1000, 1000 * 30);
    }
    private void setRepeatTasks(long triggerTime, long interval) {
            AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(RepeatTaskScheduler.ACTION);
        //系统中如果有这个pendingIntent 取消
        PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent,
                PendingIntent.FLAG_NO_CREATE);
        if (pending != null) {
            am.cancel(pending);
        }
        pending = PendingIntent.getBroadcast(this, 0, intent, 0);
        am.set(AlarmManager.RTC_WAKEUP, triggerTime, pending);
        am.setRepeating(AlarmManager.RTC_WAKEUP, triggerTime, interval, pending);
    }
}

在AndroidManifest.xml中加入

<receiver android:name=".RepeatTaskScheduler">
    <intent-filter>
        <action android:name="com.yourcompanyname.appname.action.RepeatTaskSchedule" />
    </intent-filter>
</receiver>

代码我没测试过,只介绍思路,有问题留言

用户头像 回复 2012年 12月1日 @ Warwick 上等兵 (286 威望)
选中 2012年 12月1日 @Sion
提一个问题:

相关问题

0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Ziggs 上等兵 (345 威望)
+2 投票
1 回复 50 阅读
用户头像 提问 2013年 1月26日 @ Sona 上等兵 (306 威望)
0 投票
1 回复 37 阅读
用户头像 提问 2012年 12月1日 @ Vayne 上等兵 (271 威望)
0 投票
1 回复 22 阅读
0 投票
1 回复 27 阅读
用户头像 提问 2012年 12月1日 @ Rammus 上等兵 (334 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...