Mục tiêu
Ngăn thoát ứng dụng nhầm khi bấm Back một lần. Yêu cầu bấm 2 lần trong 2 giây.
Cách làm: Override onBackPressed()
Bước 1: Tạo project
Bước 2: Layout activity_main.xml
<LinearLayout ... android:gravity="center" android:background="#33FFFF00" android:orientation="vertical">
<TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
Bước 3: MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final int TIME_INTERVAL = 2000; // 2 giây
private long backPressedTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onBackPressed() {
if (backPressedTime + TIME_INTERVAL > System.currentTimeMillis()) {
// Bấm lần 2 trong 2 giây -> thoát thật
super.onBackPressed();
return;
} else {
// Bấm lần 1 -> hiện toast nhắc
Toast.makeText(this, "Click two times to close", Toast.LENGTH_SHORT).show();
}
backPressedTime = System.currentTimeMillis();
}
}
Logic:
- Lưu thời điểm bấm Back lần trước (
backPressedTime). - Nếu lần này - lần trước < 2000ms → gọi
super.onBackPressed()(thoát). - Ngược lại → show Toast nhắc, cập nhật
backPressedTime.
Kết quả
Bấm Back lần 1 → Toast "Click two times to close":

Bấm Back lần 2 trong 2 giây → App thoát.
Mở rộng
- Dùng
Snackbarthay Toast để đẹp hơn. - Fragment: Xử lý trong
OnBackPressedCallback(Activity 1.0+). - DoubleBackPressHelper library.