0

Kindle Fire の下部には、「ホーム」ボタンと「戻る」ボタンを含むバーがあります。

「戻る」ボタンをクリックすると、アプリの「onPause()」イベントが呼び出されます。

「ホーム」ボタンをクリックすると、アプリがクラッシュします。Android ダイアログ ボックスが表示されます。アプリが予期せず停止したと表示されます。「強制終了」ボタンが表示されます。

これを防ぐためにどのイベントを処理する必要がありますか。これは、ダウンロードしたアプリではなく、私のアプリでのみ発生するので、そうです、それは私です、笑。

編集

この Web ページに従って、物事がどのように機能するかについての洞察を得るために、イベントとトーストをアプリに追加しました。[戻る] ボタンをクリックすると、onPause()、onStop()、および onDestroy() メソッドによって生成されたトーストが表示されます。ホーム ボタンをクリックすると、トーストは表示されず、クラッシュするだけです。

解像度

Akhil は、logcat を見ることを提案しました。私のマシンは Android 開発には不十分なように思われるため (または、エミュレーターに期待しすぎている可能性があります)、エミュレーターを実行しません。起動するのに永遠にかかります。とにかく、エミュレーターを実行する方法を見つけた後 (そして初めて logcat を見て、ハ)、シリアライゼーションに関連する例外をスローしていることに気付きました。私は今それを解決するために出発します。正しい方向へのキックをありがとう Akhil!

ああ、ホームをクリックすると、エミュレーターonPause()トーストを表示したので、現実はまだ期待どおりに機能しています。

最後の

エラーは、onSaveInstanceState(Bundle savedInstanceState)メソッドを機能させるために追加したシリアライゼーションに関連していました。基本的に、私のアプリ (および Android に変換した古いゲーム) はシリアライズ可能ではなかったため、onSavedInstanceState()のこのコードはコンパイルされませんでした。

savedInstanceState.putSerializable(GAME, game);

「game」は無害なので、Game のクラス定義に「implements Serializable」を追加しました。ただし、ゲーム内のプライベート クラスに同じものを追加することを怠りました。これが例外の原因でした。

4

2 に答える 2

0

Android では、セキュリティ上の欠陥により、ホーム ボタンをインターセプトできません。利用可能なオプションの 1 つは、ホーム ボタンを押してアプリを閉じたときに呼び出される onStop をオーバーライドすることです。

@Override
    protected void onStop() 
    {
        super.onStop();
        //do whatever you want here
    }
于 2012-04-14T16:07:45.510 に答える
0

戻る」ボタンをクリックすると、アプリの「onPause(), onStop(),onDestroy()」イベントが呼び出されます。

ホーム」ボタンをクリックすると、アプリの「onPause(), onStop(),」イベントが呼び出されます。

(これは一般的なシナリオであり、想定しています)ログステートメントを入れonPause(), onStop()て、エラーが発生している場所を確認してください。

于 2012-04-14T16:18:55.390 に答える