[英]Android Service and UI Thread
我在我的應用程序中運行了一個服務..
此服務有一個用於向服務器發送消息的對象以及一個獲取該對象並使用它的函數。
該對象是從服務初始化的,但是當UI獲取此對象並使用它時 - 看起來它在UI線程上使用它。
它是否正確 ? 有沒有辦法讓我的對象始終從服務線程運行?
public class ServerMessagesManager extends Service {
private ServerMessagesReceiver serverMessageReceiver;
@Override
public void onCreate() {
super.onCreate();
this.serverMessageReceiver = new ServerMessagesReceiver(app);
}
public ServerMessagesReceiver getServerMessagesReceiver()
{
return serverMessageReceiver;
}
}
使用IntentService
而不是Service
。 如果您在Service
進行網絡呼叫,則UI將停滯不前。 因此,使用IntentService
因為它使用單獨的Thread
。
而且您不知道服務器消息何時將檢索數據。 如果只要網絡調用仍在進行中訪問對象,則可能拋出NullPointerException
。 每當服務器響應時,使用BroadcastReceiver
來觸發Intent
。
據我所知,Android服務在UI線程上運行。 如果要創建異步作業,則應使用Intent Service
請參閱: IntentService和服務之間有什么區別?
這是您可以嘗試的Intent服務示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.