我有一个需要更新proceed_event通知的应用程序。通知有一个进度条,我需要每5分钟递增一次。我使用处理程序,但有些事情困扰着我,或者我根本不理解它们是如何工作的。
if (progress<=24)
{
contentView.setProgressBar(R.id.status_progress,24,progress,false);
Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT).show();
progress++;
mnNotificationManager.notify(IS_PARKED_ID, notification);
mHandler.postDelayed(mUpdateTimeTaskProgressbar, 300000);
}
这是代码。当设备屏幕关闭时,通知似乎没有更新。我过去曾经使用过Handlers,但我记得我每100毫秒更新一次。所以我的问题是,处理程序是以某种方式暂停,停止并重新启动,还是其他东西。你有一些像wake_lock这样的建议吗? 谢谢,西蒙 修改 忘记提及这一切都来自服务
答案 0 :(得分:1)
gc会不时运行以释放设备上的内存。如果从UI线程运行,则可能也会收集通知的更新程序。
我正在使用service
来显示正在进行的通知,这样我可以肯定,服务和通知都不会被停止/收集。
我的活动和服务之间的沟通我用处理程序解决了,但是也有很多技术。
答案 1 :(得分:0)
默认情况下,处理程序在UI线程的相同进程中运行,因此我认为您最好使用服务来更新进度条。 在这种情况下,您希望每5分钟更新一次UI。您可以使用AlarmManager启动警报服务来实现此目的。