【发布时间】:2018-06-03 14:33:31
【问题描述】:
在我的应用程序中,我需要保存 Intend 数据以供以后使用(在应用程序重新启动时)。 我试过的是:
保存:
将Intent 解析为Uri 得到String >> 将String 放入SharedPreferences
检索:
从SharedPreferences获取String >>使用获取的String解析成Intent
这是我保存和检索 Intent 的代码
private void saveIntent(Intent data){
editor = prefs.edit();
String uri = data.toUri(0); //intent.toURI() deprecated
editor.putString("INTENT_DATA", uri);
editor.commit();
}
private void retrieveIntent(){
String intentString = prefs.getString("INTENT_DATA", null);
try {
mIntent = Intent.parseUri(intentString, 0);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
我已经尝试过这种方法,但它返回 Empty。我尝试调试代码,发现这是因为在saveIntent() 方法中,data.toUri(0) 将“空字符串”分配给String uri
请告诉我哪里做错了,如果有其他方法来存储绑定了所有数据的 Intent 对象,请务必提及。
我在互联网上搜索过,发现解析为 JSON 可能是一种方法,但大多数尝试过这种方法的人抱怨由于某些活动而丢失了与 Intent 对象捆绑的未知数据。
请提及是否真的可以保存 Intent 对象?如果有任何方法,请指导我采用这种方法。
【问题讨论】:
-
你得到答案了吗?你能帮助我吗?非常感谢。
-
@hungcuiga1 这是一个老问题,不,在那段时间我没有找到任何办法,我最终使用了其他方法来处理我的案例
-
您还记得使用哪种方法吗?谢谢。
-
实际上,我并没有从共享偏好中保存/检索意图,而是保存了额外的数据
-
您使用 Intent Extras 在活动之间传递数据。这就是您放置额外数据的方式:
intent.putExtra(YOUR_KEY_HERE, YOUR_DATA_HERE)。这就是您检索它的方式:getIntent().getExtras().getString(YOUR_KEY_HERE)。然后将检索到的数据保存在SharedPreferences中。
标签: android json android-intent sharedpreferences uri