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

Jam*_*mes 12 multithreading android oncreate

有些事情我现在还不太明白.

我的主要活动类创建一个Service,它创建一个等待TCP连接的新线程.一旦进入,它将开始一项新活动:

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

之后,onCreate()该类的方法运行.它将创建2个线程:一个记录并发送数据,另一个接收和播放数据.那些线程有一个永远的while循环.

出于某种原因,我注意到onCreate()最后一个类的内容再次被调用,这使我的程序崩溃.我不明白为什么它再次被调用,因为只有2个线程正在运行,没有用户交互.文档说:"首次创建活动时调用.".该活动已在运行,我不是想创建它.

有人可以解释一下这种行为吗?

xte*_*ore 13

Android将在某些"设备配置更改"后重新创建您的活动.一个这样的例子是方向.你可以在这里阅读更多... http://developer.android.com/guide/topics/resources/runtime-changes.html

您的线程中的某些东西可能正在做一些被认为是配置更改的东西?

如果是这种情况,您可能会发现扩展Application类并在那里进行初始化很有用.看到这篇文章... 在Android上轮换活动重启

HTH


lm2*_*m2a 6

我在某些三星设备上遇到了两次被称为“活动”的活动。我通过在清单的Activity标签上添加android:launchMode =“ singleInstance”来解决它。希望对您有所帮助。