gpt4 book ai didi

java - 变量的生命周期 : Reference becomes NULL

转载 作者:行者123 更新时间:2023-12-02 07:29:31 25 4
gpt4 key购买 nike

我对变量的生命周期有疑问。

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

两个服务之间的通信通过列表进行:当带有传感器数据的新文件准备好(具有特定大小)时,文件名将附加到列表中。上传服务无限循环检查列表中是否有新文件并上传它们。

但是这个列表会导致一个问题:当我的应用程序在后台运行并且我在某个时候打开许多其他应用程序时,列表上的引用在传感器服务中变为 NULL(也可能在上传服务中)。

该列表在 Main-Activity 中定义:

private static LinkedBlockingDeque<String> mFileSendQueue;

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

mFileSendQueue = new LinkedBlockingDeque<String>();

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

public static void setQueue(LinkedBlockingDeque<String> queue) {
mFileSendQueue = queue;
}

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

感谢您的阅读

最佳答案

我建议您的“发件人服务”自行保存记录。您可以按时间戳命名文件,发件人会存储最后上传的时间戳。

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

关于java - 变量的生命周期 : Reference becomes NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com