我已将服务创建为流程。我将一些数据保存到MyFirebaseMessagingService类中的Shared Preference中。但是,当我尝试在MyService中检索该数据时,它将返回空。
为了保存我正在使用此代码的数据
val preferences = getSharedPreferences("Sample", Context.MODE_PRIVATE)
val editor = preferences?.edit()
editor?.putString("shiftStartTime", map["shift_start_time"].toString())
editor?.putString("shiftEndTime", map["shift_end_time"].toString())
editor?.commit()
这是访问服务中数据的代码
override fun onCreate() {
Log.e(TAG, "onCreate")
initializeLocationManager()
mPreferences = getSharedPreferences("Sample", Context.MODE_PRIVATE)
}
override fun onLocationChanged(location: Location) {
Log.e(TAG, "onLocationChanged: $location")
val startTime = mPreferences!!.getString("shiftStartTime", "")
// This Start time always return as empty
}
这是清单文件声明
<service
android:name=".location.MyService"
android:process=":my_service"/>
答案 0 :(得分:0)
如果您想在不同进程之间可靠地共享首选项或数据,则应使用SharedPreferences
以外的其他名称,例如ContentProvider
。
在API 23中,MODE_MULTI_PROCESS
标志was deprecated:
应用程序不应尝试使用它。相反,他们应该使用 明确的跨流程数据管理方法,例如
ContentProvider
。
如果您仍然想使用SharedPreferences
,请不要对Service
使用专用的过程。