0

Android用の小さなアプリ(サービス)を作成しましたが、ほとんどの場合実行され、電話の起動後に正しく再起動しますが、時々(電話はその時点でオンになっています)終了または強制終了されます。

これはパッシブ サービス (画面ロックのオン/オフ イベントを待機する) であるため、起動時に再実行するようにマークされたプロセスが再度アクティブ化されないように、Android システムでこのような方法でプロセスを強制終了できるのは何でしょうか。

または、言い換えれば、常に実行されることを意図したサービスが強制終了され、再びアクティブ化されないようなケースを検出/防止する方法は?

記録のために、サービスをアンインストールするオプションがあります;-)。


更新:私の質問は一般的なものですが、このサービスを念頭に置いています: https://github.com/macias/MissingSettings

onStartonCommand質問について:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent,flags,startId);
    // If we get killed, after returning from here, restart
    return START_STICKY;
}
4

1 に答える 1

1

基本的に、いつでも殺されるのを防ぐことはできません。低メモリは良い例です。あなたの場合、Android システムは UI がないと考えているので、サービスは実際には必要ないと思います。フォアグラウンドにあるアプリのリソースを解放することは理にかなっています。

サービスが本当に必要な場合は、通知付きの startForeground を使用してユーザーに表示する必要があります。

また、 onStartCommand の戻り結果でリレーを試すこともできます。これは、システムから意図を取り戻すのに役立つ場合があります。

ps 要件を共有していただければ、サービスの設計方法に関するアドバイスを提供する方がはるかに簡単です。

于 2013-08-11T19:08:10.177 に答える