English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この記事では、AndroidプログラミングでHOMEキー機能をシミュレートする方法について説明します。皆さんに共有し、以下のようにご参照ください:
QQの戻るボタンを押したときにActivityを破棄しない方法(つまりActivity.finish()を呼び出さない、システムがonDestroyを呼び出さない)を提供します。代わりに、ホームボタンを押したようにActivityを「一時停止」します(つまりonPause、onDestroyのみを呼び出します)。
以下のコード:
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 注意 intent.addCategory(Intent.CATEGORY_HOME); this.startActivity(intent); return true; } return super.onKeyDown(keyCode, event); }
特に注意してください:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); この文は必ず追加してください。なぜなら、ActivityのlaunchModeはデフォルトでstandardで実行されるため、このマークを追加しないと新しいActivityが作成され、現在のActivityと同じTaskに配置されます。以下はFLAG_ACTIVITY_NEW_TASKの説明 FLAG_ACTIVITY_NEW_TASKマーク
startActivity()に渡されたIntentオブジェクトがFLAG_ACTIVITY_NEW_TASKフラグを含む場合、システムは現在のactivityとは異なるtaskでアクティビティを起動するために検索します。起動するactivityのaffinity属性が現在のすべてのtaskのaffinity属性と異なる場合、システムはそのaffinity属性を持つ新しいtaskを作成し、起動するactivityを新しいtaskのスタックに配置します。それ以外の場合、activityを同じaffinity属性を持つスタックに配置します。
Androidに関する詳細な内容に興味を持つ読者は、本サイトの特集を確認してください:《Android開発入門と進階チュートリアル》、《Androidデバッグ技術と一般的な問題解決方法のまとめ》、《Androidマルチメディア操作技術のまとめ(オーディオ、ビデオ、録音など)》、《Android基本コンポーネントの使用法のまとめ》、《AndroidビューViewの技術のまとめ》、《Androidレイアウトlayoutの技術のまとめ》および《Androidコントロールの使用法のまとめ》
本稿の内容が皆様のAndroidプログラムデザインに役立つことを願っています。
声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされています。本サイトは所有権を持ちません。また、人工編集は行われておらず、関連する法的責任も負いません。著作権侵害が疑われる場合は、メールを送信してください:notice#oldtoolbag.com(メール送信時、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認が取れた場合、本サイトは即座に侵害される可能性のあるコンテンツを削除します。)