मेरे पास गतिविधियों के साथ एक आवेदन है जो वापस स्टैक ए -> बी -> सी -> डी -> ई। अब गतिविधि ई पर, मैं उन पिछली स्टैक गतिविधियों को जानना चाहता हूं जिन्हें मैंने नेविगेट किया था। मुझे यह कैसे मिल सकता है ??एंड्रॉइड एप्लिकेशन में वापस स्टैक गतिविधियों को कैसे ढूंढें?
उत्तर
मुझे यकीन नहीं है कि मुझे यह अच्छा लगेगा ... आप पिछली गतिविधि पर वापस जाना चाहते हैं? यदि ऐसा है, तो वर्तमान गतिविधि को समाप्त करें जो आप पिछले एक पर वापस आ जाएंगे।
नीचे कोड सभी कार्य को निकालने के लिए इस्तेमाल किया जा सकता है और वापस ढेर में प्रत्येक कार्य के भीतर शीर्ष गतिविधि
ActivityManager m = (ActivityManager) ctx.getSystemService(ctx.ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10);
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator();
while(itr.hasNext()){
RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next();
int id = runningTaskInfo.id;
CharSequence desc= runningTaskInfo.description;
int numOfActivities = runningTaskInfo.numActivities;
String topActivity = runningTaskInfo.topActivity.getShortClassName();
}
यह बैक स्टैक जैसा नहीं है - बैक स्टैक में एक ही कार्य के भीतर कई गतिविधियां शामिल हो सकती हैं। मुझे नहीं लगता कि ओपी क्या पूछ रहा है करने का एक तरीका है। –
इसके अलावा इसे GET_TASK अनुमति – for3st
की आवश्यकता है LOLLIPOP (एसडीके 21+) के रूप में यह बहिष्कृत है और केवल पूर्व संस्करणों में प्रदान की गई जानकारी का एक बहुत छोटा सबसेट देता है सुरक्षा कारणों से – for3st
वास्तव में, इसके बाद आपको runningtaskinfo से कार्य आईडी getRunningTasks का उपयोग कर और प्राप्त कर सकते हैं, टास्क आईडी की तुलना करके GetRecentTasks का उपयोग करके हालियाटास्किनोफ़ प्राप्त करें। अब आप हालियाटास्किनोफ़ो में बेसिंटेंट के साथ स्टार्टक्टिविटी का उपयोग करके उस गतिविधि को पुनरारंभ कर सकते हैं।
आप "adb shell dumpsys गतिविधि गतिविधियों" आदेश का उपयोग कर सकते हैं
संदर्भ के लिएhttp://www.onsandroid.com/2015/01/find-back-stack-activities-in-android.html
मुझे ढेर में गतिविधियों की सूची मिली है अब मैं कैसे मार सकता हूं? मान लें कि स्टैक –
में तीसरी गतिविधि कोड के माध्यम से ऐसा करना संभव है? –
getRunningTasks(..)
के रूप में पदावनत किया गया है या आप अपने अनुप्रयोग के लिए विशेष अनुमति की जोड़ने के लिए नहीं करना चाहते हैं एक वैकल्पिक समाधान है यदि सभी गतिविधियां आपकी हैं: आप एक सिंगलटन Stack
, LinkedList
या LinkedHashSet
में एक पहचानकर्ता को चिह्नित कर सकते हैं (गतिविधि स्वयं ही कचरा होने की आवश्यकता नहीं हो सकती है) onPause()
में डीडी पहचानकर्ता को ढेर के लिए और इसे onResume()
में हटा दें।
आप यह पता लगाने के लिए कि क्या कोई गतिविधि और अनुक्रम बनाया गया है, आप उस स्टैक्स की सामग्री देख सकते हैं।
आप अपना कोड साफ़ कर सकते हैं और मैन्युअल रूप से ऐसा करना भूल जाते हैं यदि आपकी सभी गतिविधियां आपके ऐप के लिए सामान्य आधार गतिविधि से प्राप्त होती हैं।
मैं आपको स्टार्ट एक्टिविटी के बजाय startActivityForResult का उपयोग करने की सलाह देता हूं, फिर मूल/स्रोत गतिविधि को पुनर्प्राप्त करने के लिए- कॉल प्राप्त करने के लिए कॉलिंगएक्टिविटी()। GetClassName()।
यह कैसे पता चलेगा कि यह घर से आया है? उपयोग getIntent() अपने getAction() -> android.intent.action.MAIN और getCategories() -> android.intent.category.LAUNCHER
मुझे लगता है कि आप गतिविधियों के परिवर्तन सुनकर यह कर सकते हैं , registerActivityLifecycleCallbacks के इस एपीआई के माध्यम से:
https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html
यह आप अपने खुद के वर्गों के एक ढेर में जोड़ने के लिए मदद करेगा, और अपनी इच्छानुसार पूरे राजकीय देखते हैं।
मैं गतिविधि ई पर यह खोजना चाहता हूं, मैंने ए, बी, सी, डी से इस – azzits
जैसे कुछ नेविगेट किया है ठीक है, तो राजदीप दुआ का जवाब है। : पी –