সুধীশ বি নায়েরের প্রশ্নের একটি সুন্দর (এবং স্বীকৃত) উত্তর রয়েছে, যা আমার মনে হয় এর চেয়ে ভাল বিকল্প যেমন হওয়া উচিত;
সময় কেটে গেছে কি না তা পরীক্ষা করে কি ভুল হয়েছে TIME_INTERVAL
শেষ পিছনের প্রেস থেকে মিলিসেকেন্ডগুলি (2000 বলুন) পাস হয়েছে । System.currentTimeMillis();
সময় সংরক্ষণ করার জন্য নিম্নলিখিত নমুনা কোডটি onBackPressed()
বলা হয়;
private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses.
private long mBackPressed;
@Override
public void onBackPressed()
{
if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis())
{
super.onBackPressed();
return;
}
else { Toast.makeText(getBaseContext(), "Tap back button in order to exit", Toast.LENGTH_SHORT).show(); }
mBackPressed = System.currentTimeMillis();
}
স্বীকৃত উত্তর সমালোচনা ফিরে ; flag
এটি সর্বশেষে চাপা ছিল কিনা তা নির্দেশ করতে একটি ব্যবহার করেTIME_INTERVAL
(বলুন 2000) মিলিসেকেন্ড এবং সেট - রিসেট হয় মাধ্যমে Handler
এর postDelayed()
পদ্ধতি আমার মনের মধ্যে আসা প্রথম জিনিস ছিল। কিন্তু postDelayed()
কর্ম যখন কার্যকলাপ বন্ধ করা হয়, অপসারণ বাতিল করে দিতে হবে Runnable
।
যাতে অপসারণ করতে Runnable
, এটি অবশ্যই বেনামে ঘোষণা করা হবে না এবং পাশাপাশি পাশাপাশি সদস্য হিসাবে ঘোষণা করা হবে Handler
। তারপর removeCallbacks()
পদ্ধতিHandler
যথাযথভাবে বলা যেতে পারে।
নিম্নলিখিত নমুনা বিক্ষোভ;
private boolean doubleBackToExitPressedOnce;
private Handler mHandler = new Handler();
private final Runnable mRunnable = new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
};
@Override
protected void onDestroy()
{
super.onDestroy();
if (mHandler != null) { mHandler.removeCallbacks(mRunnable); }
}
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
mHandler.postDelayed(mRunnable, 2000);
}
অবদানের জন্য @ ননথকে ধন্যবাদ; অ্যাপ্লিকেশন বন্ধ হওয়ার পরেও টোস্ট ম্যাসেজটি উপস্থিত হওয়া রোধ করার জন্য , Toast
সদস্য হিসাবে ঘোষণা করা যেতে পারে - বলুন mExitToast
- এবং কল mExitToast.cancel();
করার ঠিক আগে বাতিল করা যেতে পারে super.onBackPressed();
।