首先,我希望我提出正确的问题(否则我会删除它)。
我将描述正在发生的事情以及我认为的原因:
我的应用程序Service
在后台运行,其流程与UI
不同。 UI
和Service
都需要来自我服务器的相同信息,因此他们会共享此信息。我将UI
的这些信息发送到Service
,因此我将其复制到我的Service
,因此应该独立于我的UI
。
问题是:如果我关闭了我的UI
(杀了我的应用,而Service
仍然在运行)我的Service
崩溃,因为我从{{{}}复制了变量1}}为空。
当我从UI
收到我的Service
信息时,我首先将其复制到我的UI
中:
Service.str = strFromUi;
但是因为它会有相同的参考,我试着这样做:
Service.str = new String(strFromUi);
我检查过他们没有相同的引用(str == strFromUi -> false
)。
我对发生的事情并不清楚。也许new String(strFromUI)
正在UI
进程中创建变量,当我终止此过程时,Service
无法再访问它。
非常感谢任何帮助或参考!
答案 0 :(得分:0)
问题不是我想象的那样。当我杀死我的应用程序(UI)时,我的服务会因某些(仍然未知)的原因而重新创建。
我的解决方案是在Preferences中保留此变量,因此在重新创建我的服务时,它会从Preferences中读取并且能够保持正常运行。