2013-07-09 11 views
7

परिदृश्य पर क्लिक करके खोला:एंड्रॉयड ऐप पुन: प्रारंभ जब एप्लिकेशन आइकन

मैं आइकन पर क्लिक करके अपना ऐप खोलने गतिविधियों के माध्यम से नेविगेट कुछ करना,, घर बटन पर क्लिक करके एप्लिकेशन को रोक दें।

केस 1:

अगर मैं आइकन फिर से क्लिक करके मेरी ऐप खोलने पहली गतिविधि से ऐप पुन: प्रारंभ।

केस 2:

अगर मैं (मेनू बटन दबाने और मेरे एप्लिकेशन का चयन करके 4.0 में) हाल ही में खुले क्षुधा से मेरी एप्लिकेशन को खोलने यह रुकी हुई स्थिति से शुरू होता है।

मैं व्यवहार 2 हमेशा घटित करना चाहता हूं, नहीं चाहता कि आइकन पर क्लिक करके खोले जाने पर हर बार फिर से शुरू हो जाए।

मैंने अपनी मैनिफेस्ट फ़ाइल की तुलना अन्य ऐप्स के साथ की है और वे मेरे समान हैं, लेकिन अलग-अलग व्यवहार करते हैं (यानी मुझे दूसरा मामला पसंद है)।

संपादित करें:

यह यहां कहा गया है: App completely restarting when launched by icon press in launcher

लेकिन कोई जवाब :(

+0

तुम यहाँ अपने पहले अभ्यास कोड का हिस्सा है, क्योंकि वह से हमने पाया कि पीछे समस्या क्या है। –

+0

इसकी एक स्पलैश गतिविधि 2 सेकंड के लिए एक छवि को छोड़कर और फिर एक और गतिविधि शुरू करने के अलावा कुछ भी नहीं करती है – sanjeev

+0

हो सकता है कि इसमें मैनिफेस्ट फ़ाइल के साथ कुछ करना हो। क्या आप इसे पोस्ट कर सकते हैं? –

उत्तर

4

मुझे यह मिला। मैंने गतिविधि ध्वज में एक ध्वज android:launchMode="singleTask" सेट किया था। मैंने उस कोड को हटा दिया।

मैंने अपने कोड में सभी गतिविधियों के लिए onsaveInstance विधि भी जोड़ा और यह अभी काम कर रहा है!

धन्यवाद :)

+0

यदि आपको वास्तव में समाधान था, तो आपको अपना जवाब स्वीकार करना चाहिए। – cregox

+0

हैलो, मुझे एक ही समस्या है; लेकिन मेरे पास कहीं भी लॉन्चमोड फ्लैग नहीं है। क्या आप 'ऑनसेवस्टेंसस्टेट' फ़ंक्शन का उपयोग करके हल किए गए तरीके से थोड़ा और विस्तार कर सकते हैं? (मुझे लगता है कि आपको SaveInstanceState पर मतलब है) – ocramot

+1

वास्तव में इसकी आवश्यकता नहीं थी। यह मेरे लिए काम करने के बाद भी मेरे लिए काम कर रहा है ऑनसेव इंस्टेंस कोड। – sanjeev

0

प्रयास करें तो आप इस कोड के साथ अभ्यास कोड छप को बदलने के लिए ..

public class Splash extends Activity { 

protected boolean _active = true; 
protected int _splashTime = 2000; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.splash); 

    Thread splashTread = new Thread() { 
     @Override 
     public void run() { 
      try { 
       int waited = 0; 
       while (_active && (waited < _splashTime)) { 
        sleep(100); 
        if (_active) { 
         waited += 100; 
        } 
       } 
      } catch (InterruptedException e) { 
       e.toString(); 
      } finally { 
       Intent intent = new Intent(getApplicationContext(), 
         MainActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     } 
    }; 

    splashTread.start(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
} 

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
//  super.onBackPressed(); 
} 
} 
0

वर्तमान गतिविधि में कुछ छवि सेट करें जिन्हें नीचे 2 सेकंड के लिए प्रदर्शित करने की आवश्यकता है।

ImageView im = new ImageView(this); 
im.setImageResource(set your image); 
setContentView(im); 
intentMainScreen = new Intent(getApplicationContext(), MainScreen.class); 
Handler x = new Handler(); 
x.postDelayed(new splashhandler(), 2000); 

फिर स्पलैशहैंडलर क्लास में अपनी गतिविधि शुरू करें (जो चलने योग्य और रन विधि में कॉल प्रारंभ गतिविधि लागू करता है)।

यह आपकी स्प्लैश स्क्रीन को 2 सेकंड के लिए प्रदर्शित करेगा और एक और गतिविधि शुरू करेगा।

1

अपने लांचर गतिविधि को यह करें:

if (!isTaskRoot()) { 
    finish(); 
    return; 
} 
super.onCreate(savedInstanceState); 
संबंधित मुद्दे