मेरी 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 क्यों दिखाया जाता है

0
Chris 19 नवम्बर 2015, 13:46

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 समाप्त करें।

2
Eric Liu 19 नवम्बर 2015, 10:56

अगर मुझे फिनिश कहा जाता है तो LogoActivity क्यों दिखाई जाती है?

इसका उत्तर है- जब आप अपना सिस्टम शुरू करने से पहले ऐप के मेनिफेस्टाइल चेक करते हैं, तो ऐसी गतिविधि प्राप्त करने के लिए जिसका इंटेंट-फ़िल्टर एक्शन और श्रेणी "android.intent.action.MAIN" और "android.intent.category.LAlCHER" पर सेट है।

यह गतिविधि आपके ऐप की लॉन्चर (पहली) गतिविधि है। (मुझे लगता है, आपके मामले में यह LogoActivty है)।

जब आप अपना ऐप "एंड्रॉइड सिस्टम" शुरू करते हैं, तो यह गतिविधि आपके गतिविधि स्टैक में जोड़ देता है। क्या आप कुछ अन्य गतिविधि शुरू करते हैं, जो गतिविधि स्टैक के शीर्ष पर भी जुड़ती है।

एक गतिविधि खत्म करने पर यह गतिविधि स्टैक से हटा दी जाएगी।

जब भी आप अपना ऐप "एंड्रॉइड सिस्टम" शुरू करते हैं तो शीर्ष गतिविधि प्राप्त करने के लिए गतिविधि स्टैक का पता लगाता है। और उसी से अपना एप्लिकेशन शुरू करें।

अगर यह पाया गया कि गतिविधि स्टैक खाली है तो सिस्टम आपके ऐप को आपके ऐप के लॉन्चर के साथ शुरू करता है।

आपके मामले में आप दोनों गतिविधियों को पूरा करते हैं। इस प्रकार आपकी गतिविधि स्टैक खाली हो जाती है और यह आपको LogoActivity के साथ शुरू करती है।

समाधान

MainActivity में onBackPress मेथड को ओवरराइड करें और कॉल फिनिश न करें। लेकिन इस मामले में आपकी गतिविधि ऑनबैकप्रेस को बंद नहीं करेगी।

या अपनी MainActivity लॉन्चर गतिविधि करें

1
Navin Gupta 19 नवम्बर 2015, 11:30

क्योंकि यह Back vs Home बटन का उपयोग करके अलग है। एंड्रॉइड गतिविधि देखें intl / es / संदर्भ / एंड्रॉयड / ऐप्स / Activity.html

0
Alberto Méndez 19 नवम्बर 2015, 10:51

नई गतिविधि के लिए आपको Intent का उपयोग करना होगा। इस प्रकार सं।

startActivity(new Intent(LogoActivity.this, MainActivity.class));
finish();

केवल startActivity(MainActivity.class) के बजाय

0
Jaydip Umaretiya 19 नवम्बर 2015, 10:56

onBackPressed() विधि को ओवरराइड करने का प्रयास करें

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}
0
Collins Abitekaniza 19 नवम्बर 2015, 11:00

अपनी गतिविधि के onBackPressed () विधि को नियंत्रित करने का प्रयास करें।

0
Jorge Díaz 19 नवम्बर 2015, 11:02

आप इसे प्राप्त करने के लिए प्रकट में गतिविधि विशेषताओं का उपयोग कर सकते हैं।

" एंड्रॉयड : finishOnTaskLaunch "

अधिक जानकारी के लिए कृपया http://developer.android.com/guide/topics पर जाएं /manifest/activity-element.html

0
Ajitha 20 नवम्बर 2015, 04:38

हमेशा intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); का उपयोग करें

0
IDontEvenKnow 3 फरवरी 2016, 09:47