BroadcastReceiver 和 ReentrantLock。有啥问题吗?
Posted
技术标签:
【中文标题】BroadcastReceiver 和 ReentrantLock。有啥问题吗?【英文标题】:BroadcastReceiver and ReentrantLock. Are there any problems?BroadcastReceiver 和 ReentrantLock。有什么问题吗? 【发布时间】:2012-05-15 08:25:48 【问题描述】:我正在开发一个可点击的小部件。我想使用一个静态的 java.util.concurrent.locks ReentrantLock 所以每次只调用一次小部件逻辑。
但我担心的是,在非常罕见的情况下,锁可能不会被释放,因为它会因为 10 秒的生命周期窗口而被预先杀死。
使用 ReentrantLock 是否存在异议?释放锁的最佳方法是什么?
或者也许有一个 android 选项可以只运行单线程?
目前我正在考虑在 onReceive 结束时在 finally 块或 finalize 方法中释放锁(哎哟)。
【问题讨论】:
【参考方案1】:我想使用静态 java.util.concurrent.locks ReentrantLock,所以每次只调用一次小部件逻辑。
AppWidgetProvider
的onUpdate()
在主应用程序线程上被调用。根据定义,它只能被称为“一次一次”。你不需要锁。
【讨论】:
以上是关于BroadcastReceiver 和 ReentrantLock。有啥问题吗?的主要内容,如果未能解决你的问题,请参考以下文章
BroadcastReceiver 和 ReentrantLock。有啥问题吗?
具有 ResultReceiver 和生命周期的 BroadcastReceiver
如何从 BroadcastReceiver 在 Activity 中发送和保存字符串消息
BroadcastReceiver和AlarmManager Android
BroadcastReceiver 和 PHONE_STATE 不起作用
Android requestLocationUpdates 使用 PendingIntent 和 BroadcastReceiver