簡體   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