参考: Android開発 ホームボタン押下やアプリ切り替わりを検知する - えんたつの記録
Intent#ACTION_CLOSE_SYSTEM_DIALOGS | Android Developersで
BroadcastReceiver を登録すれば
Home ボタンが押下されたことを検出することができます。
Intent#ACTION_CLOSE_SYSTEM_DIALOGS の特徴
- ホームボタンが押された事自体に反応する
- アプリがバックグラウンドにいても反応する
- 戻るボタンが押された場合には反応しない(※戻るボタンが押された事は別の方法で取得できる)
参考元では Intent#ACTION_CLOSE_SYSTEM_DIALOGS の問題点として
「アプリがバックグラウンドにいても反応してしまう」ことを挙げていましたが
register したなら unregister すれば良いんじゃないの?と試してみると
うまくいったのでこの点は解消されました。
ということで onPause とかで unregisterReceiver しましょう。
private HomeButtonReceiver mHomeButtonReceiver; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ホームボタン押された時の Reciever の登録 mHomeButtonReceiver = new HomeButtonReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(mHomeButtonReceiver, filter); } private class HomeButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent){ Toast.makeText(getApplicationContext(), "ホームボタンが押されました", Toast.LENGTH_LONG).show(); finish(); } } @Override public void onPause(){ super.onPause(); unregisterReceiver(mHomeButtonReceiver); }
feedly の Android アプリは毎回リフレッシュしないで
ホームボタンとかバックボタンで閉じられたことを検知したら
次回起動時にリフレッシュすればいいんじゃないですかね。
今の onPause → onResume で毎回リフレッシュは使いづらいですよ…。