我有一個包含兩個包的應用程序。在com.soul.app1.plugin包中有一個FireReceiver.class(這是Tasker插件的一部分)。值存儲正常,但它被正確檢索(在第二個包 - Settings.class中)僅在第一次運行時(重新安裝後)。當我嘗試再次檢索時,檢索舊值而不是新值。SharedPreferences在包之間不起作用(在一個應用程序內)
Settings.java在com.soul.app1包:
public class Settings extends Activity {
@Override
public void onResume() {
super.onResume();
SharedPreferences settings = getApplicationContext().getSharedPreferences("SETTINGS", 0);
int minVolSet = settings.getInt("value", 0);
}
}
FireReceiver.java在com.soul.app1.plugin包:
public final class FireReceiver extends BroadcastReceiver
{
@Override
public void onReceive(final Context context, final Intent intent)
{
SharedPreferences.Editor editor;
SharedPreferences settings;
settings = context.getApplicationContext().getSharedPreferences("SETTINGS", 0);
editor = settings.edit();
editor.putInt("value", 2); // constant 2 is for testing purposes only
editor.apply();
}
}
通常,應用程序的所有組件都將在單個進程中運行,除非另有要求。但是,當涉及多個*線程*時,類似的因素可能是一個問題,這是文檔忽略評論的問題。 –