我的Storyteller
类与共享首选项交互。
它从共享首选项加载一个字符串集,默认值包含22个字符串,保存在其<代码>章节 变量中。
当一个"完成"事件在程序的后面发生时,Storyteller会从章节
中删除一个String,然后将其提交给Shared首选项。
我的日志显示最初加载了22个字符串,然后删除并提交到编辑器后加载了21个字符串。
当我再次运行程序时,加载的是22章,而不是预期的21章。
private Set<String> chapters;
protected Storyteller(Context c) {
buffer = "";
choices = new JSONArray();
SharedPreferences sharedPref = c.getSharedPreferences(c.getString(R.string.pref_key), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
chapters = sharedPref.getStringSet("chapters", new HashSet<String>());
Log.v("sip", chapters.toString());
Log.v("sip-loaded", String.valueOf(chapters.size()));
if (chapters.isEmpty()) {
Log.v("sip", "saving vignettes");
ArrayList<String> names = vignettes();
for (int i = 0; i < names.size(); i++) {
String name = names.get(i);
chapters.add(name);
}
editor.putStringSet(c.getString(R.string.chapters), chapters);
editor.commit();
}
Log.v("sip", String.valueOf(chapters.size()));
}
public void complete(String chapter, Context c) {
chapters.remove(chapter);
SharedPreferences sharedPref = c.getSharedPreferences(c.getString(R.string.pref_key), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putStringSet(c.getString(R.string.chapters), chapters);
editor.commit();
Log.v("sip", String.valueOf(chapters.size()));
chapters = sharedPref.getStringSet("chapters", new HashSet<String>());
Log.v("sip", String.valueOf(chapters.size()));
}
第一次运行的日志:
12-10 15:24:27.161 3241-3241/? V/sip-loaded: 22
12-10 15:24:27.161 3241-3241/? V/sip: 22
12-10 15:24:27.161 3241-3241/? V/sip-storyloaded: Story loaded
12-10 15:24:37.409 3241-3241/coffeechoices.quantumproductions.com.choicescoffee V/sip: 21
12-10 15:24:37.409 3241-3241/coffeechoices.quantumproductions.com.choicescoffee V/sip: 21
12-10 15:24:37.409
第二次运行的日志:
12-10 15:25:34.097 3307-3307/coffeechoices.quantumproductions.com.choicescoffee V/sip-loaded: 22
12-10 15:25:34.097 3307-3307/coffeechoices.quantumproductions.com.choicescoffee V/sip: 22
12-10 15:25:34.098 3307-3307/coffeechoices.quantumproductions.com.choicescoffee V/sip-storyloaded: Story loaded
编辑:
getString(R.string.chapters)是章
,请参阅字符串文件:
<resources>
<string name="app_name">choices.coffee</string>
<string name="pref_key">choices.coffee</string>
<string name="chapters">chapters</string>
</resources>
我试着使用“chapters”和getString,结果是一样的。
请注意,在我保存了complete
函数后,我可以从文件中读取数据,并且它显示了正确的数量21。当我重新启动时,它是22,但我创建数据集fresh的日志(仅在集为空时发生)没有被调用。
调用。clear()
SharedPreferences sharedPref = c.getSharedPreferences(c.getString(R.string.pref_key), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.clear();
允许它正确保存。
您正在使用两个不同的键:R.string.chapters
和"章节"
。
我假设它们不等于同一个字符串。也可以只使用一个键值进行切换。
编辑:
您不应直接根据SharedReference文档更改章节
。getStringSet():
请注意,您不能修改此调用返回的设置实例。如果您这样做,存储数据的一致性就不能得到保证,您修改实例的能力也不能得到保证。
我在共享偏好设置中出错。当我通过手机上的活动应用菜单关闭应用程序时,我的数据不会保存。只有当我通过完成亲和()关闭应用程序时,数据才会保存。帮助我修复错误。 }'
当我打开下面的测试时,chrome一直在运行几次,导致测试失败。我已经调试了两天,找不到问题。你能指出我在哪里出错吗,任何帮助都将不胜感激! WebDriver ChromeDrive类 Object类 测试类
我在努力打字 当我保存一个实体时,有时我的数据会更新,有时不会。完全相同的请求第一次不会起作用,但第二次会起作用。我使用保存()更新和插入。插入时一切都好。 以下是我的代码(使用NestJS键入表单): == == == == 当我在save()之后找到()时,我的用户地址不会更新,而我从Mongo收到了modifiedCount 1。如果我重复这个请求,这一次它是有效的。。。 有什么想法吗?
如果必须保证一个方法在spring boot应用程序启动时只执行一次,那么的最佳替代方案是什么?
我正在使用netty编写一个网络游戏服务器,并打算使用keep alive来提高性能<如果我为boss和worker executor使用CachedThreadPool,那么服务器对于保持活动和非保持活动连接都可以正常工作<但是如果我使用FixedThreadPool(1),一个用于boss,一个用于worker,第一个响应会发送给客户端,但如果浏览器使用该连接发送第二个请求,它将被阻止并在服务
3.2 第一次启动 第一次启动后,会进入如下页面: 第一次启动没有任何数据,请按照提示初始化数据。 由于站点信息依赖Nginx集群信息、集群信息,所以请完成站点依赖的Nginx集群信息、业务集群信息配置后,再配置站点信息。