Ich habe eine einfache App zum Testen Android: Prozess Attribut des Dienstes. Also meine Service sieht wie folgt aus:Service mit Android: Prozess startet nicht
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();
}
}
Ich versuche Service von der Tätigkeit zu beginnen wie folgt:
findViewById(R.id.startServiceBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startService(new Intent(getApplicationContext(),MyService.class));
}
});
alles funktioniert gut. Jetzt füge ich android: process = ": service" -Attribut zur Service-Deklaration im Manifest hinzu. Und danach beginnt der Dienst nicht. Also warum und was sollte ich für den Start-Service in einem separaten Prozess ändern?
Wie Sie, wenn Ihr Dienst ausgeführt überprüfen haben? – F43nd1r
Es ist nicht Ihr Problem, aber Sie verwenden Intent-Service falsch. Sie sollten nichts in OnStartCommand für einen Intent-Dienst tun - es sollte alles in onHandleIntent sein. Indem Sie es in onStartCommand ausführen, brechen Sie die integrierte Methode des IntentService zur Bearbeitung von Anfragen. –
@ F43nd1r Ich überprüfe es mit Android-Monitor-Registerkarte im Studio, sollte Dienst starten doJob() -Methode, die Nachrichten zu logcat drucken. Wenn ich diese Nachrichten sehe, bedeutet dies, dass der Dienst ausgeführt wird – borune