锁屏时Android线程和计时器运行缓慢

时间:2015-01-29 21:10:31

标签: android multithreading timer background lockscreen

首先抱歉我的英语。 我有问题,我找不到解决方案,听起来像是: 我开发了一个应用程序,它从gps获取我的位置并将其发送到PC上的tcp服务器,并将数据存储到列表视图中(例如)。我设置了一个每2秒发送一次位置的计时器。一切正常,即使我将两个客户端连接到服务器,直到手机被锁定..然后我的服务器收到丑陋的字符串..它看起来像它跨越的发送字符串(字符串包含来自已购买客户端的数据部分,部分连接在一起) )..但是当我解锁手机时,服务器再次接收正常的字符串..         我想知道当锁定屏幕出现时如何使我的应用程序在相同的参数中运行..任何想法?

2 个答案:

答案 0 :(得分:0)

如果您在活动或片段中执行此操作,则可能是您的应用生命周期出现问题。如果您想了解生命周期,请阅读本文档文章:http://developer.android.com/training/basics/activity-lifecycle/index.html

对onPause方法不执行任何操作不会阻止您的活动进入休眠状态,Android可以随时终止您的活动。

执行此操作的正确方法是在Service内,服务是Android上的一个特殊组件,可以独立于用户正在执行或不执行的操作执行,在这种情况下,您可以创建一个保存唤醒锁定的服务,以防止它在您需要发送数据的几秒钟内休眠。

更简单的解决方案是使用类似Location polling library之类的东西,并满足您的需求。

答案 1 :(得分:0)

当屏幕锁定时,您的活动要么在暂停时暂停,要处理这些方法非常重要,以便优雅地处理任何中断并且没有错误。或者,应用程序将继续在后台运行。

如果您阅读了activity lifecycle.

  

在正常的应用程序使用过程中,前景活动有时会受到导致活动暂停的其他可视组件的阻碍。例如,当打开半透明活动(例如对话框样式中的活动)时,先前的活动会暂停。只要活动仍然部分可见但目前不是焦点活动,它仍然会暂停。

     

但是,一旦活动完全被遮挡且不可见,它就会停止(将在下一课中讨论)。

Activity Lifecycle from Android com 活动生命周期来自android.com