[解決済み】戻るボタンをホームボタンのように動作するように上書きする
質問
戻るボタンを押すと、アプリケーションが破壊された状態ではなく、停止した状態になるようにしたいのですが、どうすればいいですか?
Androidでは ドキュメント と記載されています。
...すべてのアクティビティが、BACKが押されたときに破壊されるという動作を持っているわけではありません。ユーザーがMusicアプリケーションで音楽の再生を開始し、BACKボタンを押すと、アプリケーションは通常のBACK動作を上書きし、プレーヤーアクティビティが破壊されるのを防ぎ、そのアクティビティが見えなくなったとしても、音楽の再生を継続します。
この機能を自分のアプリケーションで再現するには?
3つの可能性があると思うのですが......。
-
戻るボタンが押されたことを捕捉し(以下のように)、次にホームボタンが呼び出す何らかのメソッドを呼び出します。
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { Log.d(this.getClass().getName(), "back button pressed"); } return super.onKeyDown(keyCode, event); }
-
バックボタン押下をキャプチャし、ホームボタン押下を偽装する。
-
バックボタンが押されたところをキャプチャして、ホーム画面のActivityを開始し、私のアプリケーションのActivityを効果的に停止状態にします。
編集する。 私はサービスについて知っており、この問題に関連するアプリケーションでそのサービスを使用しています。この質問は、特に、戻るボタンを押したときにアクティビティを破壊状態ではなく、停止状態にすることについてです。
どのように解決するのですか?
ほとんどの場合
サービス
を使用してバックグラウンドで何かを実行し、目に見える形で
Activity
は、単にこの
Service
. (ミュージックプレイヤーも同じように動作すると思うので、docsの例は少し誤解を招きそうです)。もしそうなら、あなたの
Activity
できる
finish
は通常通り、そして
Service
はまだ実行中です。
よりシンプルな方法としては
Back
ボタンが押され
moveTaskToBack(true)
を次のようにします。
// 2.0 and above
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
私は、Activityが正常に終了し、必要に応じてServiceから現在の状態を読み込むなどして自分自身を再作成できることが望ましいと思います。しかし
moveTaskToBack
は、時折、迅速な代替案として使用することができます。
ノート
: 以下のDaveの指摘のように、Android 2.0では新しい
onBackPressed
メソッド、および
これらの推奨事項
戻るボタンの処理方法について。
関連
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] java.lang.ClassCastException: java.util.Arrays$ArrayList は java.util.ArrayList にキャストできません。
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] Maven: assembly-pluginが全く実行されない
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み】フラグメントを使用してバックスタックをクリアする
-
[解決済み】前のアクティビティに戻るのを防ぐには?
-
[解決済み】Android - 「戻る」ボタンをオーバーライドして、アクティビティをFinish()しないようにするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] Javaでdoubleをfloatに変換する