私は、位置リスナーとセンサー リスナーの両方をアタッチするアプリケーションを作成して、それらからの変更をファイルに記録できるようにしています。
奇妙なのは、アプリケーションを使用している電話の 1 つが一部の例で強制終了だったことです。これを向きの変更に絞り込みました。録音中に電話の向きが変わった場合、アクティビティ内に「mSensorManager」として保存した SensorManager 属性は次のようになります。 null に設定します。
これは私の質問につながります: 設計上の選択が悪いため、SensorManager 参照を保存すべきではありませんか? または、それを使用する前に参照が null かどうかを確認する必要がありますか?
編集:追加する2つのこと:
加速度計と磁力計の属性も無効化されているだけでなく (これは理にかなっています)、locationmanager (向きの決定とは関係がないため、あまり変化しません) も無効になっていることがわかりました。
これらの属性をアクティビティ以外の何かに保存する必要がありますか?
それは私のために何をしましたか: アクティビティのライフサイクル内から行われるように、リスナー、マネージャー、およびセンサーのインスタンス化を修正しました。その後、唯一の問題は破壊されたウェイクロックにありましたが、向きの変更を維持する必要がありました. 別のフェーズではありますが、アクティビティのライフサイクル中にも取得されるように変更しました。