तो एंड्रॉइड में मैं अपनी एप्लिकेशन क्लास को सिंगलटन बनाना चाहता हूं।कोटलिन सिंगलटॉन एप्लिकेशन क्लास
इस तरह यह करना:
object MyApplication: Application(){}
काम नहीं करेगा। मिली त्रुटियाँ के बाद कार्यावधि में फेंक दिया जाता है:
java.lang.IllegalAccessException: private com....is not accessible from class android.app.Instrumentation.
ऐसा भी संभव नहीं है:
class MyApp: Application() {
private val instance_: MyApp
init{
instance_ = this
}
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree());
}
}
companion object{
fun getInstance() = instance_
}
}
तो मैं कैसे अपने आवेदन वर्ग मेरे एप्लिकेशन में हर जगह का एक उदाहरण हो सकता है, बजाय MyApp.instance()
उपयोग करना चाहते हैं (applicationContext as MyApp)
का।
यह भी एक स्पष्टीकरण है कि मैं यह क्यों चाहता हूं: मेरे पास मेरे ऐप में कक्षाएं हैं, उदाहरण के लिए, एक साझाप्रणाली सिंगलटन जिसे संदर्भ के साथ शुरू किया गया है, और इसके सिंगलटन के रूप में, तर्क नहीं हो सकते हैं।
यह अच्छा @nitrico दिखता है, लेकिन मुझे'val Context.myApp नहीं मिल सकता है: MyApp () = एप्लिकेशन कॉन्टेक्स्ट को MyApp 'भाग के रूप में प्राप्त करने के लिए मिलता है। क्या आप थोड़ा और विस्तार में जा सकते हैं? जहां इस लाइन को जाने की जरूरत है और इसे किसी अन्य वर्ग में कैसे पहुंचाया जाए? – shredder