2011-06-29 16 views
5

मैं अपने ऐप को बंद करने से रोकने के लिए अपने एप्लिकेशन की गतिविधि में निम्न कोड का उपयोग कर रहा हूं।मेरे आवेदन को बंद करने से पीछे बटन को रोकें

/* Prevent app from being killed on back */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     // Back? 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Back 
      moveTaskToBack(true); 
     } 

     // Return 
     return super.onKeyDown(keyCode, event); 

    } 

यह काम नहीं करता है। ऐप एंड्रॉइड 1.6 (एपीआई लेवल 4) संगत होने के लिए सेट है। मेरे एप्लिकेशन आइकन पर क्लिक करने से मेरे ऐप को स्पलैश गतिविधि (जो मुख्य है) पर पुनरारंभ करता है। मैं अपने ऐप को वापस बंद करने से कैसे रोक सकता हूं?

उत्तर

8

क्या आपने super को किसी अन्य ब्लॉक में कॉल करने का प्रयास किया है, तो इसे केवल तभी बुलाया जाता है जब कुंजी KEYCODE_BACK नहीं है?

/* Prevent app from being killed on back */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     // Back? 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Back 
      moveTaskToBack(true); 
      return true; 
     } 
     else { 
      // Return 
      return super.onKeyDown(keyCode, event); 
     } 
    } 

सब ईमानदारी में, हालांकि, तो आप इस वजह से आपके एप्लिकेशन के पृष्ठभूमि में रखा गया है, किसी भी क्षण में यह सिस्टम स्मृति को पुनः प्राप्त करने के लिए पुनर्नवीनीकरण किया जा सकता है पर भरोसा नहीं कर सकते हैं।

+0

यह पूरी तरह से काम किया। मुझे पता है कि इसका उपयोग करने के आसपास आरक्षण हैं लेकिन मुझे यह बेहद उपयुक्त लगता है। –

1

भले ही आप ऐसा कर सकें, आपको नहीं करना चाहिए। उपयोगकर्ताओं को हर समय स्मृति में अपना ऐप रखने के लिए मजबूर करना एक अच्छा विचार नहीं है और केवल उन्हें परेशान करेगा।

10

एक और अधिक संक्षिप्त समाधान: -

@Override 
public void onBackPressed() { 
    // do nothing. We want to force user to stay in this activity and not drop out. 
} 
0

समापन करने से रोकने के साथ ही वापस जाने की ज़रूरत नहीं है, तो Android WebView में इस का उपयोग करते हैं:

@Override 
public void onBackPressed() { 
    if (mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return; 
    } 

    // Otherwise defer to system default behavior. 
    super.onBackPressed(); 
} 
संबंधित मुद्दे