当前位置: 首页 > 知识库问答 >
问题:

Android线程和服务停止不另行通知

郎宏浚
2023-03-14

所以我做了一个应用程序,它使用很多线程/可运行(我们说的是300多线程)来下载很多内容。这在模拟器和一些设备如三星Galaxy S3上工作很好,但由于某些原因,在HTC One和其他设备上,我的线程或服务在没有任何通知、警告和错误的情况下被停止。应用程序继续运行,但启动所有线程的任何服务/线程都只是终止。

我所尝试的是:

    null

来自HTC One的Logcat,带有START_STICKY和startForeground(刚刚保存的数据名为POI,开始下载26号,然后停止):

05-23 14:52:54.732: D/libc(17514): [NET] getaddrinfo+,hn 13(0x6170692e706172),sn(),family 0,flags 4
05-23 14:52:54.732: D/libc(17514): [NET] getaddrinfo-,err=8
05-23 14:52:55.363: D/historie(17514): save POI id: jtyvZD9bX9
05-23 14:52:55.383: D/historie(17514): Starting poi number: 26
05-23 14:52:57.595: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative RSSI = -65 abnormalRssiCnt = 0 newLinkSpeed = 72
05-23 14:52:57.595: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative mLinkspeedCount = 1, mLinkspeedSum: 72
05-23 14:52:59.998: D/PMS(705): acquireWL(4237bc08): PARTIAL_WAKE_LOCK  AlarmManager 0x1 705 1000
05-23 14:53:00.028: D/PMS(705): releaseWL(4237bc08): PARTIAL_WAKE_LOCK  AlarmManager 0x1
05-23 14:53:00.048: I/ClockThread(996): now=1400849580059 next=59941
05-23 14:53:00.068: W/MastheadClock(1546): mDigitAnimMin.start
05-23 14:53:00.608: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative RSSI = -65 abnormalRssiCnt = 0 newLinkSpeed = 72
05-23 14:53:00.608: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative mLinkspeedCount = 2, mLinkspeedSum: 144
05-23 14:53:03.642: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative RSSI = -65 abnormalRssiCnt = 0 newLinkSpeed = 72
05-23 14:53:03.642: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative mLinkspeedCount = 3, mLinkspeedSum: 216
05-23 14:53:06.675: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative RSSI = -64 abnormalRssiCnt = 0 newLinkSpeed = 72
05-23 14:53:06.675: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative mLinkspeedCount = 4, mLinkspeedSum: 288
05-23 14:53:09.698: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative RSSI = -64 abnormalRssiCnt = 0 newLinkSpeed = 72
05-23 14:53:09.698: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative mLinkspeedCount = 5, mLinkspeedSum: 360
05-23 14:53:09.698: D/WifiStateMachine(705): fetchRssiAndLinkSpeedNative: Update RSSI:-64 and linkspeed:72 in database
05-23 14:53:09.698: D/WifiApDatabaseHandler(705): updateConnectedAP...

编辑1:

因此,手动调用GC使我能够下载更多的数据,然后它再次停止,所以我可以通过每次下载新数据时调用GC来破解它。这是我当前的实现,但是为什么完成的线程会占用内存呢?有没有更好的办法?

共有1个答案

梁丘波
2023-03-14

这可能是你碰到了Android系统可以处理的线程数量的限制。您提到您使用ExecutorService。默认情况下,只能同时运行5个线程,排队的线程限制为128个。

参见AsyncTask的源代码CORE_POOL_SIZE是可以同时运行的任务数,MAXIMUM_POOL_SIZE是可以排队的线程数。

 类似资料:
  • 问题内容: 我已经到了秃顶几步之遥… 我正在尝试运行一项服务,该服务将检查我工作中的服务器是否正在运行。应该每5分钟执行一次。 我经历过TimerTask,ScheduledExecutorService,最后是Handler。他们都工作了好几个小时,除了一些不准确的地方外,还有1-5分钟的时间,然后突然,“计时器”就停止了发射。 现在,我已经了解到,如果Scheduler遇到未捕获的异常,它将停

  • 问题内容: 我在Java中的线程上有些挣扎,我有三个线程- 线程1,线程2和线程3。那些启动时正在执行某些任务,我想通过thread1停止这两个线程。我将thread1放在,然后停止两个线程,但是两个线程的进程仍在运行。你有什么想法吗? 问题答案: 您如何试图阻止他们??警告此方法已弃用。 而是考虑对线程1使用某种标志来与线程2和3通信,它们应该停止。实际上,您可能会使用interrupts。 下

  • 问题内容: 在这里,我尝试了简单的服务程序。启动服务可以正常工作并生成Toast,但停止服务则不能。此简单服务的代码如下: 调用此服务的活动的代码如下: 使用该停止按钮帮助我停止服务,该按钮在onDestroy()方法中生成吐司。我已经在这里看到了很多有关停止服务问题的帖子,但并不令人满意,因此发布了新问题。希望得到满意的答复。 问题答案: 是错误的名字 您是否仅在此问题或代码中犯了错误?

  • 我创建了一个服务,并希望一直运行此服务,直到我的电话重新启动或强制关闭。服务应该在后台运行。 创建的服务和启动服务的示例代码:

  • 启动Windows服务时不断遇到此错误消息。 本地计算机上的服务启动后停止。如果其他服务和程序不使用某些服务,它们会自动停止。 我的代码:

  • 问题内容: 我正在使用背景音乐创建游戏应用程序。我使用Android Service播放背景音乐是​​因为我想在更改活动时运行BGM。我的问题是,我在每个活动的onPause方法中都声明了finish()(我不想让用户返回并想杀死该活动)。 因此,当我打算进行其他活动时,它将调用onDestroy并停止该服务。我想停止该服务以完全退出应用程序(按下主页按钮),并想要通过onPause()中的BGM