当MainActivity获得onPause()事件时,IntentServices将获得套接字超时

时间:2019-04-04 11:26:48

标签: java android-intentservice

我正在将一个已有4年历史的Android应用移植到最新的Android API(28)上,并且遇到了严重的问题,我不知道该如何解决。应用程序代码在这里:https://github.com/briggsm/ToWF-Android

代码的组织是这样:

我有一个产生的MainActivity(AppCompatActivity的子类(来自android.support.v7.app.AppCompatActivity;))

InfoService,IntentService的子类以及

NetworkPlaybackService,IntentService的子类

每个服务(在onHandleIntent()中)都会打开一个套接字以连接到服务器。然后,它们都进入一个“永久”循环,等待套接字并处理数据包并定期发送响应。

当MainActivity获取onPause()然后再出现onStop()事件(因为屏幕变黑)时,我的服务立即报告它们正在获取SocketTimeoutExceptions。

该代码似乎可以正确地创建和获取()WiFi锁定-尽管这三个部分中只有其中之一-NetworkPlaybackService。 (由于每个服务都打开了套接字,每个服务都应该获得锁定吗?)此外,NetworkPlaybackService会创建并获取唤醒锁。

请注意,该代码并未明确将服务“置于后台”。我不确定这是否重要,或者真的怎么做。

在线咨询似乎表明该代码不应使用IntentService,而应使用JobIntentService或类似的东西。

在进行大量更改之前,我想知道为什么为什么当前台MainActivity暂停时服务正在获得Socket超时...是否有确定的方法可以找到这个? / p>

谢谢。

维克

0 个答案:

没有答案