如何从Activity定期休息请求?

时间:2011-10-04 06:40:46

标签: android rest

我的一项活动会定期更新附近的朋友,这些地点是从休息服务获得的

目前我使用postDelay:

private Runnable updateNearbyFriendsTask = new Runnable() {
    @Override
    public void run() {

        list = api.getNearby(.....)

        handler.postDelayed(this, UPDATE_RATE); 
    }
};

问题是postDelayed在UI线程上执行,所以这个可运行的任务块ui连接不良。

从活动中定期提交后台休息请求的正确方法是什么?我不想为此创建服务,因为此rest方法仅在此活动中使用。

修改

目前已切换为使用ScheduledExecutor

this.scheduledExecutor.scheduleWithFixedDelay(new UpdateNearbyFriendsTask(), 0, UPDATE_RATE, TimeUnit.MILLISECONDS);

private class UpdateNearbyFriendsTask implements Runnable() {
    @Override
    public void run() {

        list = api.getNearby(.....)

        runOnUiThread(.....)
    }
};

3 个答案:

答案 0 :(得分:0)

使用闹钟管理器的BroadCast接收器怎么样.. http://developer.android.com/reference/android/app/AlarmManager.html

答案 1 :(得分:0)

由于它是一个长期运行和正在进行的任务,您是否想要编写一个服务或Intent服务,为您完成后台工作。
只要您的时间点,您就可以ping服务,让服务执行网络活动,释放UI线程以获取其他内容。您始终可以查询服务以了解状态,或者服务本身可以响应您的UI线程。

为了勾选定时器,你可以使用闹钟管理器,或者其他东西(我不擅长任何:P)

答案 2 :(得分:0)

我不知道创建服务有什么问题,即使它仅用于此活动。

话虽如此,请查看TimerTask。它似乎做你想要的。