0

サービスを開始する「ログの開始」ボタンを備えた単一の画面を持つアプリケーションがあります。ボタンを押すと、ボタンが「ロギング停止」ボタンに変わり、サービス onClick を停止します。このサービスは基本的に毎分データを取得し、それをいくつかの SQLite テーブルに書き込みます。

アプリケーションは、開いてログを開始し、最小化してバックグラウンドで実行するように設計されています。ただし、問題は、一定期間が経過すると、Android がプロセス/サービス/アクティビティを破棄/停止してデータをログに記録しなくなり、アプリケーションを再度開くと、画面がリセットされて「ログの開始」が再度表示されることです。アプリケーションが再起動されたため、「ログの停止」ではなく。

アプリケーション/サービスがバックグラウンドで実行され、必要なだけデータを収集できること、およびアクティビティが開いたままになるか、開いたときにログを記録するのではなく停止できる状態になることを探しています。画面をリセットします。基本的に、アプリケーションはログを記録するときに永久に最小化され、閉じられません。

助けやアドバイスをありがとう。

4

3 に答える 3

1

Foreground を実装する必要があります。

サービスをフォアグラウンドで実行するように要求するには、startForeground() を呼び出します。このメソッドは、通知を一意に識別する整数と、ステータス バーの通知の 2 つのパラメーターを取ります。詳細については、次を参照してください。

http://developer.android.com/guide/components/services.html#Foreground

于 2013-02-04T16:27:34.260 に答える
0

あなたが探しているのは、スティッキーなstartServiceです。これにより、システムがメモリ不足になるまでサービスを実行できます。サービスの詳細については、こちらをご覧ください。

于 2013-02-04T16:25:18.363 に答える
0

問題は、OS が RAM を使い果たすと、サービスがバックグラウンドにある場合にサービスを破壊することです。そのため、停止できないサービス (mp3 の再生など) はフォアグラウンド サービスです。したがって、絶対にサービスを維持したい場合は、サービスをフォアグラウンドで実行できます。おそらくあなたが望んでいるものではないことはわかっていますが、選択肢があまりないように感じます. サービスをフォアグラウンドに置くことは、サービスを強制終了してはならないことを Android に伝える方法だと思います。

于 2013-02-04T16:25:27.820 に答える