onReceive()
线程的BroadcastReceiver
方法是否安全,或者我需要自己实现同步?
如果我有onReceive()
方法中使用的任何类级别变量,并且onReceive()
方法很快被多次调用,是否会导致问题?
public class MyBroadCastReceiver extends BroadcastReceiver {
boolean isFirstTrigger = true;
@Override
public void onReceive(Context context, Intent arg1) {
if(isFirstTrigger)
{
//Do something time consuming
isFirstTrigger = false;
}
}
答案 0 :(得分:7)
BroadcastReceiver线程的onReceive()方法是安全的还是我需要自己实现同步?
只会在主应用程序线程上调用它。因此,对于在主应用程序线程上运行的任何其他内容,它是线程安全的。
如果我在onReceive()方法中使用了任何类级别变量,并且很快多次调用onReceive()方法,是否会引起问题?
如果在清单中注册了BroadcastReceiver
,则会为每个广播创建一个新实例。这就是您通常不会在BroadcastReceiver
上看到数据成员的原因。