关闭并重新打开应用程序后,无法从SharedReferences获取确切的意图对象

ljsrvy3e  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(330)

我试图将onactivityresult返回的意图数据保存到SharedReferences,我使用gson对其进行序列化,然后反序列化,以便将其存储为字符串,我的代码在保存对象和应用程序运行时完美地保存和检索数据,但当我关闭应用程序时,再次启动它并尝试获取intent数据对象我没有得到与以前完全相同的东西,从调试器中我看到mparceleddata.datasize不一样。当代码工作时

当它不起作用的时候

除此之外,一切似乎都是一样的。
下面是我如何获得意图并将其存储到SharedReferences的方法:

  1. @Override
  2. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. super.onActivityResult(requestCode, resultCode, data);
  4. if (requestCode != REQUEST_CODE && resultCode != RESULT_OK) {
  5. Toast.makeText(this,
  6. "Permission Denied", Toast.LENGTH_SHORT).show();
  7. mToggleButton.setChecked(false);
  8. }else if (requestCode == REQUEST_CODE && resultCode == RESULT_OK){
  9. Toast.makeText(this,
  10. "Permission granted, so save the intent", Toast.LENGTH_SHORT).show();
  11. SharedPreferences.Editor editor = settings.edit();
  12. Gson gson = new GsonBuilder().serializeNulls().create();
  13. String dataS= gson.toJson(data);
  14. editor.putString(PERMISSION_INTENT, dataS);
  15. editor.putBoolean(PERMISSION_BOOLEAN,true);
  16. editor.putInt(PERMISSION_CODE,resultCode);
  17. editor.commit();
  18. }
  19. }

下面是我如何检索意图的

  1. myButton.setOnClickListener(v -> {
  2. String intentStored= settings.getString(PERMISSION_INTENT, null);
  3. Gson gson = new GsonBuilder().serializeNulls().create();
  4. int mResultCode = settings.getInt(PERMISSION_CODE,0);
  5. gotPermission = settings.getBoolean(PERMISSION_BOOLEAN,false);
  6. Intent mData = gson.fromJsonintentStored= Intent.class);
  7. });

这是我的参考资料

  1. private SharedPreferences settings;
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_record);
  6. mToggleButton = (ToggleButton) findViewById(R.id.toggle);
  7. recordButton = findViewById(R.id.record_btn);
  8. settings = getApplicationContext().getSharedPreferences(
  9. getString(R.string.preference_file_key), Context.MODE_PRIVATE);

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题