2

Android 2.2 のアップデートにより、新しいカー ドック アプリが登場しました。電話をドッキングしたときにアプリがフォアグラウンドにあると、アプリが強制終了または一時停止され、アプリを再度開こうとすると、すべてが台無しになります。状態情報が失われました。

カードックアプリが何をしているか知っている人はいますか? 少なくとも、実行中のすべてのアプリケーションを強制終了するか、その他の破壊的な動作のようです。

それが何をしているのかを特定したら、それを回避するためのコーディングに取りかかることができると思います。

4

2 に答える 2

2

車のドックに入るのは構成の変更です(たとえば、アプリが必要に応じて車固有のUIを表示できるようにします)。これは、アクティビティが破棄され、後で再作成されるという通常のプロセスを経ることを意味します。

android:configChangesを悪用してこれに対処する必要がない場合、答えはこれを行わないことです。いつも言っているように、これはあなたがその最適化を望む特定の場合のためにあります。構成の変更に対処することを避けるのは言い訳ではありません。アプリが構成の変更を正しく処理しない場合、アプリが壊れる可能性のあるさまざまな方法が常にあります。新しいカードック機能は、それをもう少し明確にしているだけです。

実際、開発者はandroid:configChangesを使用しないことを強くお勧めします。通常の動作を維持することは、アプリのこの部分をテストして正しく実行されていることを確認するための非常に優れた方法であり、他の理由で発生したときに正しく動作します(最も確実に動作するため)。オリエンテーションスイッチの構成変更をオフにすると、アプリのこの部分をテストするのが非常に難しくなります。非常に珍しい状況を除いて、ここでは通常の動作を維持し、正しく機能させる必要があります。

于 2010-09-10T01:41:13.670 に答える
1

すべてのアプリは、強制終了されるとその状態を失います。実際、向きを変更すると、明示的に保存しない限り (たとえば、onSaveInstanceState で)、情報が失われます。

アプリの切り替え (またはシステムのリセット) に耐えられるように情報を永続化したい場合は、onSaveInstanceState で取得したバンドルではなく、SharedPreferences に状態を保存できます。

現在、どのように状態を保存していますか? まったくそうしますか?

ところで、ブロードキャスト レシーバーを追加して ACTION_DOCK_EVENT をリッスンし、EXTRA_DOCK_STATE_CAR の状態を確認して、インスタンス データを保存することもできます。一般的な SharedPreferences の考え方が気に入らない場合に備えてです。

于 2010-09-09T21:11:05.520 に答える