首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量的生存期:引用变为空

变量的生存期:引用变为空
EN

Stack Overflow用户
提问于 2012-10-28 00:32:56
回答 1查看 503关注 0票数 0

我有一个关于变量生存期的问题。

我的Android应用程序应该将传感器数据写入一个文件,并将该文件发送到服务器。为此,我创建了一个活动(Main- Activity )和两个服务。一个用于将传感器数据写入文件(Sensor-Service),另一个用于将文件发送到服务器(Upload-Service)。该活动有两个切换按钮,分别用于启动/停止这两个服务。

两个服务之间的通信使用一个列表:当包含传感器数据的新文件准备就绪(具有特定大小)时,该文件的名称将附加到列表中。Upload-Service在无限循环中检查列表中是否有新文件,并上载它们。

但是这个列表产生了一个问题:当我的应用程序在后台运行时,我在某个时刻打开了许多其他应用程序,列表上的引用在Sensor-Service中变成了NULL (可能也在Upload-Service中)。

该列表在Main-Activity中定义:

代码语言:javascript
复制
private static LinkedBlockingDeque<String> mFileSendQueue;

并在Main-Activity的onCreate中初始化:

代码语言:javascript
复制
mFileSendQueue = new LinkedBlockingDeque<String>();

并通过静态方法setQueue传递给两个服务(两个服务都包含这样的方法):

代码语言:javascript
复制
public static void setQueue(LinkedBlockingDeque<String> queue) {
    mFileSendQueue = queue;
}

我知道Android可以关闭该活动,例如,如果需要空间,但在我看来,只要至少有一个引用,这个列表就不应该被删除。有人知道我的错误是什么吗?

感谢您的阅读

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-28 02:10:05

我建议你的“发送者服务”自己保存记录。您可以按时间戳命名文件,发送者会存储上次上传的时间戳。

Android / dalvik vm似乎会在后台运行一段时间后删除引用。我曾在我的服务中看到过这种情况,突然硬件套接字变成空等等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13102008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档