title: Android Application class method onCreate being called multiple times
body: <p>i've overloaded the Application class in my android app and i'm using the <a href="http://code.google.com/p/acra/" rel="noreferrer">ACRA</a> report system.
  My app looks like ( <a href="https://github.com/evilsocket/dsploit/blob/master/src/it/evilsocket/dsploit/DSploitApplication.java" rel="noreferrer">real source code here</a> ) :</p>
  
  <pre><code>public class MyApplication extends Application 
  {
      @Override
      public void onCreate() {        
          ACRA.init( this );
  
          /*
           * Initialize my singletons etc
           * ...
           * ...
           */
          super.onCreate();
      }
  }
  </code></pre>
  
  <p>And as far as i know, the Application object should be created only once, so the onCreate method should be called only once.
  The problem is, that in my crash reports ( from ACRA ) i have this:</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>So it seems like the app onCreate is being called multiple times, any idea on this ?</p>
  
  <p><strong>NOTES:</strong></p>
  
  <ul>
  <li>In my android xml manifest, i did <strong>NOT</strong> use the
  android:process="string" attribute.</li>
  <li>Yes, <strong>i'm sure</strong> that in my initialization routines i'm <strong>not</strong> accidentally
  calling MyApplication.onCreate .</li>
  </ul>