मेरी 2 गतिविधियाँ हैं। पहली गतिविधि LogoActivity
है। 3 सेकंड के बाद मैं दूसरी गतिविधि शुरू करता हूं जो कि मेरा MainActivity
है।
private void startCountDown(int duration, int interval) {
CountDownTimer mCountDownTimer = new CountDownTimer(duration, interval) {
@Override
public void onTick(long millisUntilFinished) {
// nothing
}
@Override
public void onFinish() {
startActivity(MainActivity.class);
finish();
}
};
mCountDownTimer.start();
}
startActivity(Class mClass)
एक विधि है जो मैंने किसी भी गतिविधि को केवल कक्षा देकर शुरू करने के लिए बनाई है।
अब मैं MainActivity
में हूं। यदि मैं होम बटन दबाकर बाहर निकलता हूं और वापस MainActivity
देखता हूं, लेकिन यदि मैं MainActivity
से बैक बटन दबाता हूं और पहले LogoActivity
बैकग्राउंड से एप को फिर से दिखाता हूं।
मैं नहीं चाहता कि उपयोगकर्ता LogoActivity
से LogoActivity
हर बार बैक बटन (फोन से गतिविधि, न कि गतिविधि) देखें और इसे पृष्ठभूमि से पुनर्स्थापित करें।
अगर finish()
कहा जाए तो LogoActivity
क्यों दिखाया जाता है
8 जवाब
जब आप बैक बटन दबाते हैं, तो MainActivity का उदाहरण नष्ट हो जाता है।
और फिर आप फिर से इस कार्य स्टैक पर आते हैं, LogoActivity आपकी डिफ़ॉल्ट गतिविधि है इसलिए सिस्टम आपके लिए इसका एक उदाहरण बनाता है।
आप MainActivity को default.xml में डिफ़ॉल्ट गतिविधि बना सकते हैं
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
और MainActivity की ऑनक्रिएट विधि में LogoActivity शुरू करें ताकि उपयोगकर्ता पहले LogoActivity देखेगा।
3 सेकंड के बाद, LogoActivity समाप्त करें।
अगर मुझे फिनिश कहा जाता है तो LogoActivity क्यों दिखाई जाती है?
इसका उत्तर है- जब आप अपना सिस्टम शुरू करने से पहले ऐप के मेनिफेस्टाइल चेक करते हैं, तो ऐसी गतिविधि प्राप्त करने के लिए जिसका इंटेंट-फ़िल्टर एक्शन और श्रेणी "android.intent.action.MAIN" और "android.intent.category.LAlCHER" पर सेट है।
यह गतिविधि आपके ऐप की लॉन्चर (पहली) गतिविधि है। (मुझे लगता है, आपके मामले में यह LogoActivty है)।
जब आप अपना ऐप "एंड्रॉइड सिस्टम" शुरू करते हैं, तो यह गतिविधि आपके गतिविधि स्टैक में जोड़ देता है। क्या आप कुछ अन्य गतिविधि शुरू करते हैं, जो गतिविधि स्टैक के शीर्ष पर भी जुड़ती है।
एक गतिविधि खत्म करने पर यह गतिविधि स्टैक से हटा दी जाएगी।
जब भी आप अपना ऐप "एंड्रॉइड सिस्टम" शुरू करते हैं तो शीर्ष गतिविधि प्राप्त करने के लिए गतिविधि स्टैक का पता लगाता है। और उसी से अपना एप्लिकेशन शुरू करें।
अगर यह पाया गया कि गतिविधि स्टैक खाली है तो सिस्टम आपके ऐप को आपके ऐप के लॉन्चर के साथ शुरू करता है।
आपके मामले में आप दोनों गतिविधियों को पूरा करते हैं। इस प्रकार आपकी गतिविधि स्टैक खाली हो जाती है और यह आपको LogoActivity के साथ शुरू करती है।
समाधान
MainActivity में onBackPress मेथड को ओवरराइड करें और कॉल फिनिश न करें। लेकिन इस मामले में आपकी गतिविधि ऑनबैकप्रेस को बंद नहीं करेगी।
या अपनी MainActivity लॉन्चर गतिविधि करें
क्योंकि यह Back vs Home बटन का उपयोग करके अलग है। एंड्रॉइड गतिविधि देखें intl / es / संदर्भ / एंड्रॉयड / ऐप्स / Activity.html
नई गतिविधि के लिए आपको Intent
का उपयोग करना होगा। इस प्रकार सं।
startActivity(new Intent(LogoActivity.this, MainActivity.class));
finish();
केवल startActivity(MainActivity.class)
के बजाय
onBackPressed()
विधि को ओवरराइड करने का प्रयास करें
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
अपनी गतिविधि के onBackPressed () विधि को नियंत्रित करने का प्रयास करें।
आप इसे प्राप्त करने के लिए प्रकट में गतिविधि विशेषताओं का उपयोग कर सकते हैं।
" एंड्रॉयड : finishOnTaskLaunch "
अधिक जानकारी के लिए कृपया http://developer.android.com/guide/topics पर जाएं /manifest/activity-element.html
हमेशा intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
का उपयोग करें
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।