我認爲這可能是重複的,但我找不到任何可以回答我的問題的東西。我知道服務在應用程序的同一線程中工作。我想從一個服務中運行一些任務,但使用不同的線程。 我有幾個要點,我必須連續跟蹤GPS和每次我到這一點之一,我必須做一些其他任務(相當快的)。爲此,我使用BroadcastReceiver。一切都很完美,但現在我想把所有這些放在一個不同的線程中。我怎樣才能做到這一點?我的意思是我嘗試過,但我不斷收到錯誤「不能創建處理程序內部的線程沒有調用Looper.prepare()」。我查找了一些修正,但沒有一個似乎適合或成爲正確的編程方式(很少有人看起來像修復,但以一種非常糟糕的方式)。 我會發布一些代碼,以便您可以將其與您的解決方案集成。預先感謝您的幫助。Android如何在不同的線程中運行服務
public class MyService extends Service {
private final IBinder mBinder = new MyBinder();
...
@Override
public void onCreate() {
...
}
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
public class MyBinder extends Binder {
MyService getService() {
return MyService.this;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
....
(my tasks)
....
return(START_REDELIVER_INTENT);
}
............
(final method that calls stopSelf() after it's done)
............
@Override
public void onDestroy() {
Log.i("onDestroy", "Service stop");
super.onDestroy();
}
}
這應該是我正在尋找的。謝謝。現在我遇到了一個新問題。我無法使用活頁夾綁定服務。我認爲這是因爲現在在他自己的流程中運行的服務不能像以前那樣訪問。你知道我該怎麼做嗎? – user2294708
我不認爲在單獨的進程上運行服務會使綁定器不能工作。 – SathMK
它確實我想,因爲給定的相同的代碼和添加機器人:過程=「:」它導致errore當我執行被綁定到該服務的方法,包括: \t公共無效removeProximityAlert(查看視圖){\t \t myService.removeProximityAlert(Integer.valueOf(etNumber.getText()。的toString())); \t} –
user2294708