Ich habe eine App, die einen Dienst setzt und einen SettingContentObserver startet, um Änderungen in der Lautstärke, WiFi und GPS zu hören. Sie können wählen, ob Sie den Dienst starten oder stoppen möchten. Der Dienst ist START_STICKY und wird daher nicht beendet, wenn die App geschlossen wird.Kill-Service, wenn App deinstalliert wird
Die Frage ist: wenn ich meine App unlist, ohne den Prozess zu töten, was kann ich tun, um es zu töten? Diese
ist der Service:
public class ListenerService extends Service {
SettingsContentObserver mSettingsContentObserver;
Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
mSettingsContentObserver = new SettingsContentObserver(context, new Handler());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
this.getApplicationContext().getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, mSettingsContentObserver);
Toast.makeText(this, "Service starting onStartCommand", Toast.LENGTH_SHORT).show();
// If we get killed, after returning from here, restart
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
getContentResolver().unregisterContentObserver(mSettingsContentObserver);
stopSelf();
}
}
Die ContentObserver
public class SettingsContentObserver extends ContentObserver {
int previousVolume;
Context context;
public SettingsContentObserver(Context c, Handler handler) {
super(handler);
context=c;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
previousVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
}
public SettingsContentObserver(Handler handler) {
super(handler);
}
@Override
public boolean deliverSelfNotifications() {
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (audio.getRingerMode() != AudioManager.RINGER_MODE_SILENT){
Toast.makeText(context, "Se ha modificado el volumen", Toast.LENGTH_SHORT).show();
}
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//In androidManifest --> android.permission.ACCESS_NETWORK_STATE
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mWifi.isConnected()){
Toast.makeText(context, "Esta descontectado el WiFi", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "Esta conectado el WiFi", Toast.LENGTH_SHORT).show();
}
}
}
in meinem main_activity Ich habe den Start (myService) und Stopservice (myService)
Ooo. Wie kann ich meinen Service sehen? Ich benutze Androis Studio 2.2.3 mit seinem virtuellen Gerät – Tostadora
Sie könnten adb verwenden ... der Befehl wäre: ADB Shell Dumpsys Aktivität Dienste – JacksOnF1re