我的一项活动会定期更新附近的朋友,这些地点是从休息服务获得的
目前我使用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(.....)
}
};
答案 0 :(得分:0)
使用闹钟管理器的BroadCast接收器怎么样.. http://developer.android.com/reference/android/app/AlarmManager.html
答案 1 :(得分:0)
由于它是一个长期运行和正在进行的任务,您是否想要编写一个服务或Intent服务,为您完成后台工作。
只要您的时间点,您就可以ping服务,让服务执行网络活动,释放UI线程以获取其他内容。您始终可以查询服务以了解状态,或者服务本身可以响应您的UI线程。
为了勾选定时器,你可以使用闹钟管理器,或者其他东西(我不擅长任何:P)
答案 2 :(得分:0)
我不知道创建服务有什么问题,即使它仅用于此活动。
话虽如此,请查看TimerTask。它似乎做你想要的。