2016-08-08 57 views
0

Ich habe einen nativen Android-Dienst, der von einer Eigenschaft über die GUI gestartet und gestoppt wird. Die Befehle sind zu starten und den Dienst in init.rc zu stoppen wie folgt:Gibt es eine Möglichkeit, Android-Dienste in init.rc anmutig (ohne SIGKILL) zu stoppen?

service myservice /system/bin/myservice 
    class late_start 
    user my_service 
    disabled 

on property:persist.myapp.myservice.enable=1 
    start myservice 

on property:persist.myapp.myservice.enable=0 
    stop myservice 

Es gibt JNI Speicherressourcen, die, wenn der Dienst beendet wird gereinigt werden müssen, aber es scheint, dass der Dienst über gestoppt wird ein SIGKILL:

6944 6974 V myservice: IMyProcessA::onTransact() 
712 712 I AP_KERNEL: init: Service 'myservice' is being killed... 
510 510 I ServiceManager: service 'ProcessA.MyService' died 
656 656 V ProcessA: ProcessA::NotificationClient::binderDied() 
656 656 V ProcessA: removeNotificationClient() 0xb6bc60a8, pid 6944 
656 656 V ProcessA: ProcessA::NotificationClient::~NotificationClient() 
712 712 I AP_KERNEL: init: Service 'myservice' (pid 6944) killed by signal 9 
712 712 I AP_KERNEL: init: Service 'myservice' (pid 6944) killing any children in process group 

Da es keine Möglichkeit gibt, ein SIGKILL aufzuräumen abzufangen, gibt es Optionen für die init.rc ‚stop myservice‘, die das Beendigungssignal an etwas ändern kann ich wie SIGTERM abfangen kann, beispielsweise?

Antwort

0

Nachdem wir dies mit einem Kollegen besprochen hatten, waren wir uns einig, dass nach einem SIGKILL der Kernel den gesamten mit dem Prozess verbundenen Speicher zurückgewinnen würde und dass es keinen Speicherverlust geben würde.

Wenn jemand irgendwelche Informationen widerspricht, lass es mich wissen.