在我的應用程序有一個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();
}
}
現在我的問題是,每次我收到廣播的變量lastState
時間是百達假的。我確信onReceive
方法調用正確。你有什麼想法,爲什麼?對我來說,每次接收廣播時,BroadcastReceiver都會重新初始化。這是對的,如果是的話,我該如何避免這個問題?我BroadcastReceiver
在清單registerd這樣的:
<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>
即使靜態也無濟於事,因爲顯然這個過程將在廣播之間終止。靜態數據成員只是一個緩存。任何必須經歷過程終止的事情都需要寫入磁盤。 – CommonsWare 2014-12-18 23:45:36
Atention,CommonsWare是正確的。 – TiagoPereira17 2014-12-18 23:47:19
感謝您在評論中提供此信息。所以我必須寫信給'SharedPreferences'例如?將在10分鐘內除外 – Cilenco 2014-12-18 23:48:48