onPause の代わりにonWindowFocusChangedイベントを使用できます。この関数は、向きが変更されたときに呼び出されません。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.d(TAG, "FOCUS = " + hasFocus);
if (!hasFocus) finish();
}
ただし、注意: このイベントは、アクティビティがまだ表示されているときに呼び出されます (onPause() など)。実際には完全に非表示になっているときにアクティビティを終了する場合は、onStop を使用する必要があります。
private boolean isInFocus = false;
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.d(TAG, "FOCUS = " + hasFocus);
isInFocus = hasFocus;
}
@Override
public void onStop() {
super.onStop();
if (!isInFocus) finish();
}