机器人 : Service member variables becomes null after application closed

标签 android sockets android-fragments android-intent android-service

在我的应用程序中,我有 Activity 和服务, Activity 称为 startServicebindservice(用于服务和 Activity 之间的通信)。

在服务中,socket communication 正在初始化,并且还初始化了一个 Messanger handler 以返回对 Activity 的回复。当应用程序启动并运行时它工作正常。

一旦应用程序被用户强行关闭,服务就会自动重新启动,我可以在 logcat 中看到这一点。这里套接字也初始化了。但是 Messanger handler 仍然是 null,因为它之前是由 mMyService.setHandler(handler) 方法初始化的,该方法从 Activity 中调用,但这次它是在服务自动重启时调用的。

应用程序关闭后如何在 Activity 和服务之间进行通信。服务正在运行,但 Activity 处于死亡状态。

请帮帮我。我在这方面花了很多时间。

如有任何帮助,我们将不胜感激。

提前致谢。

最佳答案

一旦您强制关闭应用程序,您将无法与 Activity 通信。它不见了。死了。

您可以做的是识别这种情况(例如,您可以检查是否 handler == null,如果是,您可以从服务中自动启动 Activity,如下所示:

if (handler == null) {
    Intent intent = new Intent(this, MyActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

关于机器人 : Service member variables becomes null after application closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31126738/

相关文章:

android - 我需要保护我的 Android 应用程序不被复制吗?

c# - 如何在具有多个客户端的 TCP 服务器端保留消息发送顺序

android - 如何创建动态选项卡并为Android中的每个 fragment 添加不同的功能?

Android 和 FragmentManager

java - Android NDK,保持实时 C++ 对象

android - 如何从另一个 Activity 调用 ListView 适配器进行刷新 - notifyDataSetChanged()

python - 在 linux 上修改传出 UDP 数据包中的数据

PHP fsockopen() 失败未打开端口但 telnet 工作

android - fragment 中的 onActivityResult 未称为 childFragment

java - 如何使用 Mididriver 或其他 Android 库来选择乐器和音符?