मैं एक निम्नलिखित निर्माता के साथ एक सेवा है:एक कन्स्ट्रक्टर के साथ एंड्रॉइड सेवा को तुरंत कैसे चालू करें?
public ShimmerService(Context context, Handler handler) {
mHandler = handler;
}
मैं इस सेवा वर्ग का दृष्टांत करना चाहते हैं। मैं कोड निम्नलिखित है, लेकिन, मुझे यकीन है कि जहां परमाटर पारित करने के लिए नहीं कर रहा हूँ:
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder binder) {
mShimmerService = ((ShimmerService.ShimmerConfigureBinder) binder)
.getService();
Toast.makeText(ConfigureShimmer.this,
"Shimmer service has succesfully started.",
Toast.LENGTH_SHORT).show();
}
public void onServiceDisconnected(ComponentName className) {
mShimmerService = null;
}
};
मैं बंधन सहित सब कुछ किसी और सेटअप प्रारंभ पर और इतने पर, की है। लेकिन मुझे उपरोक्त कोड में त्रुटि मिलती है:
04-03 19:06:10.285: E/AndroidRuntime(16837): java.lang.RuntimeException: Unable to instantiate service com.milanix.androidecg.services.ShimmerService: java.lang.InstantiationException: can't instantiate class com.milanix.androidecg.services.ShimmerService; no empty constructor
मैं इस समस्या को कैसे ठीक करूं? मुझे पैरामीटर पास करने की आवश्यकता होगी? कोड काम करता है के बाद लेकिन, यह नहीं बल्कि सेवा वर्ग एक वर्ग के रूप में, का उपयोग करता है बल्कि सेवा की तुलना में:
mShimmerService = new ShimmerService(this, mHandler);
लेकिन, मैं हैंडलर का उपयोग करके और इरादा कैसे पास करूंगा? कोई उदाहरण? – Milan
आपको उस हैंडलर के लिए क्या चाहिए? क्या आप निश्चित रूप से सेवा में स्क्रैच से हैंडलर का निर्माण करने में मदद नहीं करेंगे? सेवाएं धागे नहीं हैं; सेवा उपभोक्ता कोड के समान यूआई थ्रेड पर निष्पादित होती है। –
मुझे नहीं पता कि इस संबंध में 'बाइंड सेवा 'और' स्टार्ट सेवा 'के बीच कोई अंतर है, लेकिन दस्तावेज़ीकरण और [इस चर्चा] के अनुसार (https://groups.google.com/d/topic/android- डेवलपर/onqqpHz2WQw/चर्चा) अतिरिक्त _might_ वहां नहीं है जब इरादा 'ऑनबिंड' में प्राप्त होता है। – DuneCat