IntentService 高階使用指南

2021-09-24 02:39:03 字數 1595 閱讀 3745

intentservice 是 service 的基類,可根據需要處理非同步請求(表示為 intent)。客戶端通過context.startservice(intent)呼叫傳送請求; 根據需要啟動服務,使用工作執行緒依次處理每個intent,並在工作失敗時自行停止。

步驟:建立乙個服務類,使它繼承自 intentservice 

建立具體邏輯**

在 mainfest.xml 中進行註冊

public class myintentservice extends intentservice 

@override

public void oncreate()

@override

protected void onhandleintent(@nullable intent intent)

@override

public void ondestroy()

}

我們很顯眼的看到了方法 :onhandleintent ,讓我們看看他的原始碼

可以看到這是乙個非常簡單的抽象方法,它的特性:

}thread.sleep(1000);// 模擬初始化耗時

} catch (interruptedexception e)

}每隔 50ms 傳送一次廣播 更新資料

private void sendifotobroadcast(string servicestatus)

private void sendifotobroadcast(string servicestatus, int progressstatus)

根據剛剛翻譯的文件可知:如果這個耗時操作結束,也就是 onhandleintent 方法呼叫結束,那麼 intentservice 也就會隨之結束

private int progresscount = 0;

private boolean isrunning = false;

private localbroadcastmanager manager;

public myintentservice()

@override

public void oncreate()

@override

public void ondestroy()

全部詳情請一打包 demo ->

如果你覺得本篇博文總結的不錯,記得給我點讚呦~~ 麼麼噠~~

六一快樂 啦啦啦

非同步服務IntentService

服務service雖然是在後台執行,但跟activity一樣都在主線程中,如果後台執行著的服務掛起,使用者介面就會卡著不動,俗稱宕機。後台服務經常要做一些耗時操作,比如批量處理 檔案匯入 網路訪問等,此時不應該影響使用者在介面上的操作,而應該開啟分執行緒執行耗時操作。可以通過thread handl...

IntentService原始碼分析

一般情況下,service是在主線程中執行的,這樣如果處理耗時操作會造成anr的問題,但是很多場景下我們需要用service進行耗時操作,此時就需要一種新的機制,於是便引進了intentservice的概念。先看一下官方的說法吧 總結一下,就是intentservice為了符合下面需求的場景。先看一...

IntentService原始碼解析

前言 intentservice算是service中比較重要的乙個類,而且就100行 今天一起閱讀它的原始碼和注釋。成員變數 4個 mservicelooper looper 與執行緒關聯的looper mservicehandler servicehandler 自定義handler子類,會在ha...