Android:onCreate()多次调用(而不是由我)

我现在不太明白。

我的主要活动类创build一个服务,它将创build一个等待TCP连接的新线程。 一旦进入,它将开始一个新的活动:

Intent dialogIntent = new Intent(getBaseContext(), VoIPCall.class); dialogIntent.putExtra("inetAddress", clientSocket.getInetAddress()); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplication().startActivity(dialogIntent); 

之后,该类的onCreate()方法将会运行。 它将创build2个线程:一个logging和发送数据,另一个接收和播放数据。 这些线程有一个永远的while循环。

出于某种原因,我注意到最后一个类的onCreate()被再次调用,这使得我的程序崩溃。 我不明白为什么它被再次调用,因为只有2个线程正在运行,没有用户交互。 该文件说:“首次创build活动时调用。” 这个活动已经在运行了,我并没有试图去创造它。

有人可以解释我的这种行为吗?

Solutions Collecting From Web of "Android:onCreate()多次调用(而不是由我)"

Android会在某些“设备configuration更改”后重新创build您的活动。 一个这样的例子是定位。 你可以在这里阅读更多… http://developer.android.com/guide/topics/resources/runtime-changes.html

也许你的线程正在做一些被认为是configuration改变的东西?

如果是这种情况,您可能会发现扩展Application类有用,并在那里进行初始化。 看到这个post… Android的旋转活动重新启动

HTH

我在某些三星设备上遇到了一个叫做两次的活动。 我解决了它在Manifest上的Activity标签上添加android:launchMode =“singleInstance”。 我希望这可以帮助。

当我在开发人员选项的应用程序部分使用“不保存操作”时,曾发生过这种情况。 一定要把这个关掉。

当您试图用意图中的值开始一个活动时,我观察到了这个问题。

以下是Activity_A调用Activity_B并将意图中的值传递给Activity_B中的一个示例:

 Intent intent = new Intent(this, activityB.class); intent.putExtra("val1", someValue1); intent.putExtra("val2", someValue2); intent.putExtra("val3", someValue3); this.StartActivity(intent); 

在这种情况下,您可以在AndroidManifest.xml中设置android:launchModel="singleInstance"android:launchModel="singleTop" ,Activity_B只会启动一次。 希望这可以帮助。