I/Choreographer:跳过9622帧!应用程序可能在其主线程上做了太多的工作



我正在运行alarmManager,我需要从3个不同的SQLite数据库中获取数据,并根据情况显示通知。通知可能一次超过5个。我得到了错误:跳过9622帧!应用程序可能在其主线程上做了太多的工作。应用程序也将停止。有没有任何方法可以运行alarmManager以线程或异步方式显示通知,这样我就不会损害应用程序的性能。

您应该是:

  • PendingIntent上使用getBroadcast(),创建PendingIntent以传递给AlarmManager 上的方法

  • 让广播Intent指向WakefulBroadcastReceiver 的子类

  • 让接收者呼叫startWakefulService()Intent指向你进行工作的IntentService

  • IntentServiceonHandleIntent() 结束时调用completeWakefulIntent()

这将把您的工作放在后台线程(由IntentService提供)上,并使您的进程更有可能存活足够长的时间来完成工作。

除此之外,你真的需要看看你正在做的工作。9622帧约为160秒,或超过2.5分钟。对于你的应用程序来说,这是一段非常长的时间忙于在后台做一些事情,特别是如果你在大部分时间里没有阻止网络I/O或其他事情。

最新更新