繁体   English   中英

如何从Activity发出定期休息请求?

[英]How to make periodic rest requests from Activity?

我的一项活动会定期更新附近的朋友,该位置是从休息服务获得的

目前,我使用postDelay:

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

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

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

问题是postDelayed在UI线程上执行,因此此可运行的任务阻止了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(.....)
    }
};

使用警报管理器的BroadCast接收器如何。.http: //developer.android.com/reference/android/app/AlarmManager.html

由于它是一项长期运行的任务,因此您想编写一个服务或Intent服务来为您做后台工作。
您只要在时间流逝时就可以ping服务,然后让该服务进行网络活动,从而释放UI线程用于其他操作。 您可以随时查询服务以了解其状态,或者服务本身可以响应您的UI线程。

要给计时器打勾,您可以使用警报管理器,或者其他方法(我不擅长:P)

我看不到创建服务有什么问题,即使仅用于此活动也是如此。

话虽如此,看看TimerTask 它似乎可以做您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM