कहा जा रहा है, मैंने अपने एंड्रॉइड ऐप में एप्लिकेशन क्लास को अधिभारित कर लिया है और मैं ACRA रिपोर्ट सिस्टम का उपयोग कर रहा हूं। मेरा ऐप की तरह (real source code here) दिखता है:एंड्रॉइड एप्लिकेशन क्लास विधि को कई बार
public class MyApplication extends Application
{
@Override
public void onCreate() {
ACRA.init(this);
/*
* Initialize my singletons etc
* ...
* ...
*/
super.onCreate();
}
}
और जहाँ तक मुझे पता है, आवेदन वस्तु केवल एक बार बनाया जाना चाहिए, ताकि onCreate विधि केवल एक बार बुलाया जाना चाहिए। समस्या है, मैं इस किया है (ACRA से) मेरी क्रैश रिपोर्ट में:
java.lang.RuntimeException: Unable to create service it.evilsocket.myapp.net.N ...
java.lang.RuntimeException: Unable to create service it.evilsocket.myapp.net.NetworkMonitorService: java.lang.RuntimeException: Unable to create application it.evilsocket.myapp.MyApplication: **java.lang.IllegalStateException: ACRA#init called more than once**
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2283)
at android.app.ActivityThread.access$1600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4441)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Unable to create application it.evilsocket.myapp.MyApplication: java.lang.IllegalStateException: ACRA#init called more than once
at android.app.LoadedApk.makeApplication(LoadedApk.java:495)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2269)
... 10 more
Caused by: java.lang.IllegalStateException: ACRA#init called more than once
at org.acra.ACRA.init(ACRA.java:118)
at it.evilsocket.myapp.MyApplication.onCreate(MyApplication.java:46)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
at android.app.LoadedApk.makeApplication(LoadedApk.java:492)
... 11 more
java.lang.RuntimeException: Unable to create application it.evilsocket.myapp.MyApplication: java.lang.IllegalStateException: ACRA#init called more than once
at android.app.LoadedApk.makeApplication(LoadedApk.java:495)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2269)
at android.app.ActivityThread.access$1600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4441)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: ACRA#init called more than once
at org.acra.ACRA.init(ACRA.java:118)
at it.evilsocket.myapp.MyApplication.onCreate(MyApplication.java:46)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
at android.app.LoadedApk.makeApplication(LoadedApk.java:492)
... 11 more
java.lang.IllegalStateException: ACRA#init called more than once
at org.acra.ACRA.init(ACRA.java:118)
at it.evilsocket.myapp.MyApplication.onCreate(MyApplication.java:46)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
at android.app.LoadedApk.makeApplication(LoadedApk.java:492)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2269)
at android.app.ActivityThread.access$1600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4441)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
तो यह एप्लिकेशन onCreate कई बार बुलाया जा रहा है, इस पर किसी भी विचार की तरह लगता?
नोट:
- मेरी एंड्रॉयड एक्सएमएल में प्रकट, मैं किया एंड्रॉयड का उपयोग नहीं: प्रक्रिया = "स्ट्रिंग" विशेषता।
- हाँ, मुझे यकीन है कि कि मेरे आरंभीकरण दिनचर्या में मैं कर रहा हूँ नहीं गलती से MyApplication.onCreate बुला रहा हूँ।
मैं गतिविधि.ऑनक्रेट के बारे में बात नहीं कर रहा हूं (जिसे आमतौर पर कॉन्फ़िगरेशन परिवर्तन होने पर हर बार बुलाया जाता है), लेकिन एप्लिकेशन.ऑनक्रेट! –
क्या आपने यहां ब्रेकपॉइंट सेट करने का प्रयास किया है? – CommonsWare
यह कुछ है जो मैं अपने डिवाइस पर पुन: पेश नहीं कर सकता, मैं इसे एसीआरए रिपोर्ट से देखता हूं ... अगर मैं वहां तोड़ता हूं या लॉग डी डालता हूं, तो क्रिएट को केवल मेरे स्मार्टफोन और टैबलेट दोनों पर ही कॉल किया जाता है। –