1

戻るボタンが押されたときに私の活動が破壊されたくありません。私のアプリは1.6SDKと互換性があります。http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.htmlと、ホームボタンのように機能するように戻るボタンを上書きするを参照して、次のコードを選択しました。

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
                // For versions lower than 2.0     
    if (Utility.buildDet.getDeviceBuildAPI() <= Utility.buildDet.getBuildApi() 
            && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
        onBackPressed();
    return super.onKeyDown(keyCode, event);
}

      // In any version, this function will be called
public void onBackPressed() {
    // This will be called either automatically for you on 2.0    
    // or later, or by the code above on earlier versions of the platform.
    Log.i(TAG, "##### BACK KEY IS PRESSED");
    this.moveTaskToBack(true);  // on false, it shows moveTaskToBack: 11
    return;
}

戻るボタンを押すと、これらのログが記録されます

: ##### BACK KEY IS PRESSED
 INFO/ActivityManager(51): moveTaskToBack: 10
: !!!!!!! Into onPause
: !!!!!!! Into onStop
: !!!!!!! Into DESTROY

moveTasToBack()をオーバーライドしていません。Anuclu戻るボタンが押されたときに破壊されないようにするにはどうすればよいですか。ボタンを無視するか、アクティビティを非表示にしたいのかもしれません。

手がかり、なぜそれが期待どおりに機能しないのか。

ありがとう

4

4 に答える 4

10
public boolean onKeyDown(int keyCode, KeyEvent event)  
{

     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
     {

        this.moveTaskToBack(true);
           return true;
      }

    return super.onKeyDown(keyCode, event);
}
于 2011-05-30T08:47:56.830 に答える
2

なぜ標準のシステム動作を変更したいのですか?Androidシステムはアクティビティを破壊するかどうかを決定します。システムのみに依存する必要があります。おそらく、別の方法で実行できることを実行したいと思うでしょう。たぶんあなたはサービスが必要ですか、それとも活動の保存状態を実装しますか?

于 2011-05-30T08:51:50.480 に答える
1
@Override
public void finish() {
    //super.finish();
    moveTaskToBack(true);
}
于 2013-08-05T12:01:37.537 に答える
0

バックキーをキャプチャしても、これは解決しません。Android のアクティビティ ライフ サイクルは、システムに任せるのが最善です。システムはいつでもあなたの活動を殺します。

于 2012-08-10T16:57:56.410 に答える