我有簡單的應用程序來測試android:進程屬性的服務。所以,我的服務是這樣的:服務與android:進程不啓動
public class MyService extends IntentService {
static final String TAG = "MyService";
public MyService() {
super("MyService");
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG,"onCreate()");
}
@Override
protected void onHandleIntent(Intent intent) {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
doJob();
return START_STICKY;
}
private void doJob() {
new Thread(new Runnable() {
@Override
public void run() {
Log.i(TAG,"job started");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG,"job stopped");
stopSelf();
}
}).start();
}
}
我試圖從活動啓動服務如下:
findViewById(R.id.startServiceBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startService(new Intent(getApplicationContext(),MyService.class));
}
});
一切工作正常。現在我在清單中的服務聲明中添加了android:process =「:service」屬性。之後,服務不會啓動。那麼,爲什麼這樣,我應該在獨立的過程中更改啓動服務?
你是如何檢查,如果你的服務運行? – F43nd1r
這不是你的問題,但你使用意圖服務錯誤。你不應該在onStartCommand中爲intent服務做任何事情 - 它應該都在onHandleIntent中。通過在onStartCommand中執行它,您將打破IntentService內置的處理請求的方法。 –
@ F43nd1r我使用Studio監視器選項卡在工作室中檢查它,服務應該啓動doJob()方法,將消息打印到logcat。如果我看到這些消息,那麼這意味着服務正在運行 – borune