2014-06-10 13 views
10

क्या एस्प्रेसो का उपयोग करके एक विशिष्ट गतिविधि को समाप्त करने या शुरू करने के लिए प्रतीक्षा करने के लिए एक कैननिकल समाधान है?एंड्रॉइड एस्प्रेसो: गतिविधि को समाप्त करने/शुरू करने के लिए

मेरे पास एक स्पलैशएक्टिविटी है जो कुछ सेकंड के लिए दिखाई देती है, फिर एक मुख्य क्रियाशीलता। मैं एस्प्रेसो को मुख्य गतिविधि के साथ बातचीत करना चाहता हूं, स्प्लैशएक्टिविटी नहीं, लेकिन मुझे ऐसी स्थिति की प्रतीक्षा करने के बारे में कोई जानकारी नहीं मिल रही है।

सबसे नज़दीकी चीज़ जो मैं पा सकता हूं वह निष्क्रिय संसाधनों का उल्लेख है, लेकिन यह मुझे स्पष्ट नहीं है कि मैं गतिविधि का इंतजार करने के लिए यहां इसका उपयोग कैसे करूं।

उत्तर

5

मुझे लगता है कि आपकी स्पलैश गतिविधि कुछ प्रारंभिक प्रदर्शन कर रही है।

यदि ऐसा है, तो मेरा सुझाव है कि प्रारंभिकरण के दौरान कॉलबैक प्राप्त करने में सक्षम होने के लिए कुछ प्रकार के श्रोता पैटर्न को परिभाषित किया जाए। फिर, आप एस्प्रेसो को एक IdlingResource के साथ प्रारंभ करने के लिए प्रतीक्षा कर सकते हैं।

एनबी: निम्नलिखित पूरा कोड नहीं है, लेकिन यह आप कैसे ऐसा करने के लिए एक संकेत दे करने के लिए है:

public class SplashIdlingResource implements IdlingResource, YourApplicationInitListener { 

    // volatile because can be set by a different 
    // thread than the test runner: the one calling back 
    private volatile boolean mIsInitialized; 

    private ResourceCallback mCallback; 

    public SplashIdlingResource() { 
     YourApplication application = // retrieve your Application object 
     mIsInitialized = application.isInitialized(); 
     if (!mIsInitialized) { 
      application.addInitListener(this); 
     } 
    } 

    @Override 
    public String getName() { 
     return SplashIdlingResource.class.getName(); 
    } 

    @Override 
    public boolean isIdleNow() { 
     return mIsInitialized; 
    } 

    @Override 
    public void registerIdleTransitionCallback(ResourceCallback callback) { 
     mCallback = callback; 
    } 

    @Override 
    public void onApplicationInitCompleted() { 
     m_isInitialized = true; 
     if (m_callback != null) { 
      m_callback.onTransitionToIdle(); 
     } 
    } 
} 

कहाँ onApplicationInitCompleted() कॉलबैक आप परिभाषित और जो बुलाया जाना चाहिए है जब स्पलैश गतिविधि, और इसलिए प्रारंभिकता, किया जाता है।

अंत में, परीक्षण सेटअप में Espresso.registerIdlingResource को कॉल करके एस्प्रेसो के साथ इस नए IdlingResource को पंजीकृत करें।

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