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

时间:2016-01-09 18:58:52

标签: android multithreading performance android-sqlite

我正在运行alarmManager,我需要从3个不同的SQLite DB中获取数据,具体取决于我需要显示通知的条件。通知可能一次超过5个。我收到错误:跳过9622帧!应用程序可能在其主线程上做了太多工作。应用程序也将停止。有没有办法运行alarmManager以线程或异步方式显示通知,以便我不会损害应用程序性能。

1 个答案:

答案 0 :(得分:0)

你应该:

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

  • 让广播Intent指向WakefulBroadcastReceiver

  • 的子类
  • 让接收者致电startWakefulService()Intent指向您工作的IntentService

  • IntentService

  • 结尾处completeWakefulIntent()致电onHandleIntent()

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

此外,你真的需要看看你正在做的工作。 9622帧约为160秒,或超过2.5分钟。这是非常长时间让您的应用忙于在后台执行某些操作,特别是如果您在大多数时间内没有阻止网络I / O或其他事情。