Android-屏幕超时时如何写入文件

Android-屏幕超时时如何写入文件,android,android-wake-lock,Android,Android Wake Lock,我们正在编写一个(特定于行业的)应用程序来维护自己的日志文件(我知道我们应该使用android日志,但出于商业目的,我们需要以非常特定的格式维护此日志文件)。此应用程序不适用于大众市场,用户将非常清楚该应用程序将遭受的电池消耗 首先,该应用程序有一个必须始终保持与服务器连接的服务。我们通过使用部分唤醒锁实现了这一点,一旦屏幕时间结束,它就会像预期的那样工作 然而,我们的问题是,当屏幕超时时,记录器模块停止写入位于外部存储器上的文件,一旦屏幕再次启动,记录器将在短时间后恢复 我们知道应用程序不会被

我们正在编写一个(特定于行业的)应用程序来维护自己的日志文件(我知道我们应该使用android日志,但出于商业目的,我们需要以非常特定的格式维护此日志文件)。此应用程序不适用于大众市场,用户将非常清楚该应用程序将遭受的电池消耗

首先,该应用程序有一个必须始终保持与服务器连接的服务。我们通过使用部分唤醒锁实现了这一点,一旦屏幕时间结束,它就会像预期的那样工作

然而,我们的问题是,当屏幕超时时,记录器模块停止写入位于外部存储器上的文件,一旦屏幕再次启动,记录器将在短时间后恢复

我们知道应用程序不会被系统杀死(由于前台服务),因为当它重新启动时,一切都会保持原样。(重新启动会使我们回到另一个屏幕)

是否有其他方法强制系统保持文件流的打开状态?为什么我们持有的部分尾流锁还没有这样做


必须有一种方法可以随时写入文件。

如果看不到代码,很难说。根据您的描述,部分唤醒锁是最好的选择,它应该可以防止CPU进入睡眠状态,这样只要您持有唤醒锁,就可以运行任何您喜欢的代码。从你的描述来看,这听起来就像部分唤醒锁没有生效。检查代码,确保您正在执行类似于在设备显示器进入睡眠状态时释放wakelock的操作。

这是一个设备/平台特定的问题,因为随着时间的推移,该问题已自行修复

看起来其他人也有同样的问题。。。我在发帖之前读过这篇文章,通过测试证明了OP的回应是一样的。不幸的是,那个帖子从1月起就死了,所以我转帖了。谢谢你的回复。唤醒锁肯定会生效,没有它,服务会停止ping我们的服务器,服务器会报告设备在屏幕超时约5分钟后离线。但是,使用wakelock时,设备将保持在线。这可能与线程有关吗?我的印象是wakelock可以跨所有线程工作。我将尝试用不同的线程获取一个锁,并报告差异。你使用的线程不会产生任何差异,唤醒锁应用于CPU的硬件级别,它保持整个事情处于唤醒状态,所有线程和所有进程,这是它可能被滥用的一个重要原因。