2016-10-28 14 views
0

我在我的應用程序中運行了很長時間的服務類,我有時需要一個UI線程來完成我的工作,例如找到一個聯繫人名稱,這使我創建一個遊標變量,該遊標變量需要一個內容解析器這需要一個上下文。我如何使用需要UI線程的功能,而無需在android中給它上下文?

如何在沒有任何UI線程的情況下自由地做這項工作?

+1

'Service'是'Context'的一個子類,你可以簡單地調用'getContentResolver()'。 – earthw0rmjim

+0

對不起,我會改變我的問題。 –

+0

謝謝,問題是我在一個可運行的類中使用該函數,我已經將一個內容解析器變量從服務傳遞給它,它工作。@ earthw0rmjim –

回答

0

你將無法從另一個線程(顯然)獲得UI線程,但你將能夠獲得一個Context,這當然是你需要的。

ServiceContext,因此您可以通過服務引用訪問getResource()或getContentResolver()等任何方法。

+0

你實際上可以從另一個線程獲得UI線程:https://developer.android.com/training/multiple-threads/communicate-ui.html – thomaspsk

+0

沒有,實際上,你真的不能,但是如果你已經在UI線程中,你可以通過創建一個Handler實例來保持對它的引用,這將允許你稍後調用UI線程中的一段代碼。但是在服務的情況下,你將不能創建這個實例,所以...... –

+0

@Orabîg所有你需要做的就是實例化一個使用主線程的Looper的Handler。爲什麼不能從'服務'(或任何後臺線程)?實際上這很簡單。 – earthw0rmjim

相關問題