1

私のAndroidアプリケーションはクライアントであり、誰かがホームボタンをクリックするとサーバーにメッセージを送信し、ユーザーがアプリケーションに戻ったときにサーバーにもメッセージを送信したい. HOME ボタンの keyEvent や、アプリケーションがバックグラウンドに移行するときにのみ呼び出されるメソッドを上書きできれば、メッセージを送信して、onStart() ごとにチェックされるシングルトンに静的変数を設定できるので、基本的にはどういうわけかHOMEボタンを「オーバーライド」する必要があります。私は以下を試しました:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        //...
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

それは単に機能しません。ブレークポイントを入れましたが、HOME ボタンはこのメソッドをまったくトリガーしません。(サムスン ギャラクシー エース、アンドロイド 2.2.1)。

また、次のように上書きしようとしましたonUserLeaveHint()

@Override
protected void onUserLeaveHint() {
    //...
    super.onUserLeaveHint();
}

しかし問題は、このメソッドは、HOME ボタンを押したときやアプリケーションが中断されたときだけでなく、他のアクティビティに移動したとき (そして現在のアクティビティを終了したとき) に呼び出されることです。この問題の解決策はありますか?

4

2 に答える 2

4

このAndroid Docsを見てみたいかもしれません

行に基づいて、onPause / onResume を探しています

または、アプリケーションがバックグラウンドに置かれる場合にのみ呼び出されるメソッド

そのドキュメントでは、スタックがどのように機能するかを説明する必要があります。これにより、この問題を解決できます。

于 2012-12-07T22:15:19.587 に答える
1

Android ではホーム ボタンをオーバーライドできないため、この問題を 1 日で解決する方法はありません。これを回避する最も簡単な方法は、コードを に追加することですonPauseが、もちろん、これはホーム ボタンを押さなくても呼び出すことができます。

ここでの2番目の(受け入れられていない)回答には興味深い解決策がありますが、試したことがないので、うまくいくかどうかはわかりません

于 2012-12-07T22:15:26.463 に答える