2011-06-24 16 views
5

वापस करने के लिए एक गतिविधि डाल मैं एक परीक्षण है कि मेरी मुख्य गतिविधि की शुरूआत लिख रहा हूँ और, ठीक उसके बाद, मैं निम्नलिखित आशय का उपयोग करके होम स्क्रीन के लॉन्च के साथ पृष्ठभूमि में डाल दिया:startActivitySync लटका हुआ है जब अग्रभूमि

Intent intent= new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

उसके बाद, मैं उपर्युक्त के समान इरादे का उपयोग कर अपने ऐप की गतिविधि को अग्रभूमि में वापस लाने का प्रयास करता हूं (इसमें CATEGORY_HOME ध्वज नहीं है और इसके बजाय, मैं गतिविधि का नाम और पैकेज जोड़ रहा हूं)। चूंकि मुझे यह सुनिश्चित करने की ज़रूरत है कि मेरे ऐप की गतिविधि सफलतापूर्वक लॉन्च की गई है, इसलिए मैं इंस्ट्रूमेंटेशन से "startActivitySync" विधि का उपयोग कर रहा हूं।

जब मैं परीक्षण चलाता हूं तो मुझे लगता है कि ऐप को सफलतापूर्वक पृष्ठभूमि में रखा जा रहा है और फिर अग्रभूमि में वापस किया जा रहा है, लेकिन परीक्षण रन कभी समाप्त नहीं होता है। यह "startActivitySync" विधि में हमेशा के लिए लटकता है। यह क्यों हो रहा है के बारे में कोई विचार? यह एक

Intent intent = new Intent(String action); 

कोशिश:

Intent intent = new Intent(Context packageContext, Class<?> cls): 

मैं startActivitySync(Intent) फांसी के साथ एक समान मुद्दे में भाग गया, और यह मेरे लिए यह हल

उत्तर

0
इसके बजाय इस निर्माता का उपयोग करने का

। यह पहले टेस्ट पर ठीक काम करता था लेकिन उसी कक्षा में बाद के परीक्षणों में असफल रहा। क्यूं कर? मुझे नहीं पता।

1

मेरे अनुभव में:

public testOne(){ 
MyActivity first = startActivitySync(...); 
first.finish(); 
MyActivity second = startActivitySync(...); 
} 

public testTwo(){ 
MyActivity first = startActivitySync(...); 
... 
} 

, testOne() सफल होगा,
लेकिन testTwo() "startActivitySync" पर रखती हूँ।

सुझाव दिया गया समाधान: हर परीक्षण, पूर्व के अंत में अपने
सफाई शुरू कर दिया गतिविधियों:

public testOne(){ 
MyActivity first = startActivitySync(...); 
first.finish(); 
MyActivity second = startActivitySync(...); 
second.finish(); 
} 

public testTwo(){ 
MyActivity first = startActivitySync(...); 
first.finish(); 
} 
0

वहाँ इस तरह के सवालों के बहुत सारे हैं लेकिन लगभग सभी answerers सुझाव है एक गतिविधि है जो मुझे लगता है खत्म करने के लिए ज्यादातर मामलों में काम नहीं करता है।

यदि आपकी गतिविधि समाप्त नहीं होती है तो इसका मतलब है कि कुछ यूआई ऑपरेशन जारी है। और वास्तव में इसका मतलब यह हो सकता है कि आपकी गतिविधि में कुछ गड़बड़ है। उदाहरण के लिए हाल ही में मैं इसी तरह की समस्या का सामना करना पड़ा और पता चला कि एक एनीमेशन उचित रूप से नहीं रोका गया था:

Animation anim = AnimationUtils.loadAnimation(getContext(), R.anim.rotate_infinite_clockwise); 
view.startAnimation(anim); 

तो समस्या को हल करने का सबसे सीधे आगे विधि विचारों एक के बाद एक अक्षम करने है।

संबंधित मुद्दे