1

次のコードを使用して、サービスを存続させました。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    ...
    keepServiceAlive(this, 2222);
    return super.onStartCommand(intent, flags, startId);
}
@SuppressWarnings("deprecation")
public void keepServiceAlive(Service service, int id) {
    Notification note = new Notification(0, null, System.currentTimeMillis());
    note.flags |= Notification.FLAG_NO_CLEAR;        
    service.startForeground(id, note);
}

しかし、時々、サービスがまだ殺されていました。このコードの正確性を確認するのを手伝ってもらえますか、それともより良い解決策を提供してくれますか?

4

1 に答える 1

1

不正なNotificationオブジェクトを作成しないでください。Android 4.3 はNotification、このハッキングを検出すると、独自のものであることをユーザーに表示し、サービスが実行されていることをユーザーに通知します。本当に前面に表示する必要がある場合は、適切なアイコンを付けて、ユーザーにサービスについて知らせ、それが必要な理由を説明してください。SharedPreferences を介してサービスをフォアグラウンド サービスとして実行するかどうかを彼らが決定できるようにすることを検討することもできます。

CommonsWare によるこのブログ投稿を参照してください

于 2013-08-03T22:37:44.647 に答える