簡體   English   中英

后台線程中的Android服務

[英]Android Service in background thread

我正在嘗試創建一個在給定時間間隔內運行的服務。 該服務的目的是更新數據庫,完成后通過Intent通知Activity

當用戶選擇“刷新”時,也應該從活動中調用該服務。

我已經完成了這個,但我不能讓它在一個分離的線程中運行。

該服務在Runnable中執行更新方法:

private Runnable refresh = new Runnable() {
        public void run() {
            update();   //Runs updates
            didUpdate(); //Sends broadcast
            handler.postDelayed(this, 50000); // 50 seconds, calls itself in 50 secs
        }
    };

我有另一個名為ManualRefresh的runnable,它通過活動的廣播來調用。

然而,這些runnable似乎阻止了UI。

需要建議! :)

當您通過調用它的run方法運行Runnable時,它在當前線程上運行。 要在后台線程上運行,您需要使用new Thread(refresh).start(); (如果要運行的Runnable是refresh )。

您也可以使用AsyncTask,但這更適合於活動而不是服務。 有關使用AsyncTask的信息可以在API文檔無痛線程一文中找到

我建議使用AlarmManager編寫服務。 該服務將收到一個Intent,告訴它定期更新數據庫。

更新后,您可以通過Intent通知Activity(如您所述)。

當用戶想要手動刷新時,讓應用程序向您發送一個Intent服務。 從AlarmManager或Activity中接收Intent將執行相同的代碼。

您可能還希望在請求手動刷新后重新安排警報。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM