変数の寿命に関して問題があります。
私の Android アプリは、センサー データをファイルに書き込み、このファイルをサーバーに送信する必要があります。このために、Activity (Main-Activity) と 2 つの Service を作成しました。1 つはセンサー データをファイルに書き込むためのもの (Sensor-Service) で、もう 1 つはファイルをサーバーに送信するためのもの (アップロード サービス) です。アクティビティには、2 つのサービスを個別に開始/停止するための 2 つのトグル ボタンがあります。
2 つのサービス間の通信はリストを使用して行われます。センサー データを含む新しいファイルの準備が整うと (特定のサイズを持つ)、ファイルの名前がリストに追加されます。Upload-Service は、新しいファイルがリストにあるかどうかを無限ループでチェックして、それらをアップロードします。
しかし、このリストは問題を引き起こします: アプリがバックグラウンドで実行され、ある時点で他の多くのアプリを開くと、リストの参照が Sensor-Service (およびおそらく Upload-Service) で NULL になります。
リストは Main-Activity で定義されています。
private static LinkedBlockingDeque<String> mFileSendQueue;
Main-Activity の onCreate で初期化されます。
mFileSendQueue = new LinkedBlockingDeque<String>();
静的メソッド setQueue を介して 2 つのサービスに渡されます (両方のサービスにそのようなメソッドが含まれています)。
public static void setQueue(LinkedBlockingDeque<String> queue) {
mFileSendQueue = queue;
}
スペースが必要な場合など、アクティビティが Android によって閉じられる可能性があることはわかっていますが、少なくとも 1 つの参照がある限り、リストを削除しないでください。誰かが私の間違いを知っていますか?
読んでくれてありがとう