Cil*_*nco 3 android broadcastreceiver
在我的应用程序中,我有一个BroadcastReceiver看起来像这样的东西:
public class MyBroadcastReceiver extends BroadcastReceiver
{
public static final String CUSTOM_BROADCAST_1 = "com.cilenco.application1";
public static final String CUSTOM_BROADCAST_2 = "com.cilenco.application2";
private boolean lastState = false;
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
boolean cb1 = CUSTOM_BROADCAST_1.equals(action);
boolean cb2 = CUSTOM_BROADCAST_2.equals(action);
if(cb1) lastState = true;
else if(cb2) lastState = false;
Toast.makeText(context, "" + lastState, Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,每次收到广播时,变量lastState都是假的.我确信该onReceive方法被正确调用.你有什么想法吗?对我来说,看起来BroadcastReceiver每次收到广播时都会重新初始化.这是正确的,如果是,我怎么能避免这个问题?我BroadcastReceiver在清单中注册如下:
<receiver
android:name="service.MyBroadcastReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="com.cilenco.application1"/>
<action android:name="com.cilenco.application2"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
广播之间不保存BroadcastReceivers.每个广播都将创建BroadcastReceiver的新实例,至少如果通过清单自动注册.您可以通过使变量静态并在类的所有实例之间共享来解决此问题.但是你不能在广播之间保存实例变量.
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |