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

标签 android multithreading oncreate

有些事情我现在不太明白。

我的主要 Activity 类创建了一个服务,它创建了一个等待 TCP 连接的新线程。一旦进来,它将开始一个新的 Activity :

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

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

出于某种原因,我注意到最后一个类的 onCreate() 再次被调用,这导致我的程序崩溃。我不明白为什么再次调用它,因为只有 2 个线程在运行,没有用户交互。文档说:“首次创建 Activity 时调用。”。该 Activity 已经在运行,我没有尝试创建它。

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

最佳答案

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

也许您的线程中的某些东西正在做一些被认为是配置更改的事情?

如果是这种情况,您可能会发现扩展 Application 类并在那里进行初始化很有用。看到这个帖子... Activity restart on rotation Android

HTH

关于Android:onCreate() 被多次调用(不是我调用的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299899/

相关文章:

android - opengl es2 :Advantages of using vertex buffer objects(VBO)

android - Firestore 获取 DocumentSnapshot 字段的值

java - Android Thread 并发运行的线程之间通知

c++ - 需要使用c++获取进程内存

facebook - FB.Event.subscribe -> 'comment.create' 并非每次都会触发

android - WifiP2pManager.discoverPeers 在 android 10 中失败

android - 为什么activity_main.xml屏幕只是白色?

multithreading - Perl - 同步数据访问

android - 如何避免在 onCreate() 中执行部分代码

Delphi - 何时调用 DragAcceptFiles