2012-12-11 141 views
1

我有两个项目/包是同一个应用程序的一部分。应用程序的主要项目几乎可以完成应用程序中的所有事情。但是,我们使用了第二个项目来管理应用程序的更新。我们使用的是从sqlite3的数据库更新和应用在主应用程序共享偏好使用Android共享首选项更新

editor.putString("string", sString).apply(); 

我们还可以使用下面的逻辑来看看它的新版本,如果是重新启动自动更新包

if (!sCurrentVersion.equals(ver)) { 
     Intent intent1 = new Intent(Intent.ACTION_MAIN); 
     PackageManager manager = getPackageManager(); 
     intent1 = manager.getLaunchIntentForPackage("com.pack.autoupdate"); 
     intent1.addCategory(Intent.CATEGORY_LAUNCHER); 
     startActivity(intent1); 
    } 

然后在autoupdate包中,我们只使用getSharedPreferences()。我们在共享首选项中需要的值是autoupdate包需要检查的更新URL。

我们的问题是,我们更新了数据库中的这些网址,但是我们仍然在自动更新检查中使用旧网址的一些设备。我是否需要确认并重新启动autoupdate,或者是否存在我在使用sharedpreferences时出错的问题?

+0

您是否尝试过使用一个共享偏好监听.commit()和。适用()之间的区别

的更多信息? http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html – logray

+0

感谢logray,这是什么不同,然后使用 'getSharedPreferences(“SharedPrefs”,Context.MODE_MULTI_PROCESS);' – k1komans

+0

getSharedPreferences一次性工作。添加一个监听器并随时更改一个首选项(例如在一个类中),您可以处理任何您喜欢的内容,例如影响另一个应用程序/类。这样你就不必手动更新你的首选项,只需让听众来处理它。从文档中,共享首选项侦听器在共享首选项被更改,添加或删除时被调用,即使首选项设置为其现有值,也可以调用此参数。“ – logray

回答

2

你确实调用了.commit()方法来更新SharedPreference值吗?

更新:关于Here

+0

不,我用 'editor.apply();'我将不得不查找它们之间的区别,谢谢你的建议 – k1komans

+3

.apply()和.commit()之间有区别:http: //developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply%28%29 – loikkk

+0

好赶上loikkk – logray