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,所以每次只调用一次小部件逻辑。

AppWidgetProvideronUpdate() 在主应用程序线程上被调用。根据定义,它只能被称为“一次一次”。你不需要锁。

【讨论】:

以上是关于BroadcastReceiver 和 ReentrantLock。有啥问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

BroadcastReceiver 和 ReentrantLock。有啥问题吗?

具有 ResultReceiver 和生命周期的 BroadcastReceiver

如何从 BroadcastReceiver 在 Activity 中发送和保存字符串消息

BroadcastReceiver和AlarmManager Android

BroadcastReceiver 和 PHONE_STATE 不起作用

Android requestLocationUpdates 使用 PendingIntent 和 BroadcastReceiver