SIV*_*R.J 43 android android-service sharedpreferences android-2.2-froyo
我正在开发一个Android应用程序.我正在使用android 2.2
在我的应用程序中,我正在捕获GPS数据并以1小时的时间间隔将其发送到服务.如果用户退出应用程序,它也可以正常工作(这是必需的).
我正在使用2个服务(用户定义),一个用于捕获GPS数据,另一个用于发送到服务器.
在这里我怀疑
在服务中,我们可以使用共享首选项.
如果我们将任何数据存储在应用程序的任何活动中的共享首选项中,我们是否可以在共享首选项的帮助下使用该服务中的数据?
twa*_*ton 43
您可以通过调用以下命令来访问所有Activity
和Service
类共享的默认共享首选项实例PreferenceManager.getDefaultSharedPreferences(Context context)
:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
Run Code Online (Sandbox Code Playgroud)
这非常适合存储简单的基元(如布尔值)或可序列化的对象.但是,如果要捕获大量位置数据,则可以考虑使用SQLite数据库.
SIV*_*R.J 16
我找到了解决方案.
在服务内部,我们调用以下方法来获取共享首选项
myapp.bmodel.getApplicationContext().getSharedPreferences("myPrefs_capture_gps_per_hour", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,myapp是从Application派生的应用程序类的对象
您需要一个上下文才能访问共享首选项.最好的方法是创建类MyApplication
的后代Application
,在那里实例化 preferences
并在应用程序的其余部分中使用它们MyApplication.preferences
:
public class MyApplication extends Application {
public static SharedPreferences preferences;
@Override
public void onCreate() {
super.onCreate();
preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
例如,如果您需要在其他地方访问您的首选项,您可以将其称为阅读首选项:
String str = MyApplication.preferences.getString( KEY, DEFAULT );
Run Code Online (Sandbox Code Playgroud)
或者您可以将其称为保存偏好的内容:
MyApplication.preferences.edit().putString( KEY, VALUE ).commit();
Run Code Online (Sandbox Code Playgroud)
(commit()
添加或更改首选项后别忘了打电话!)
是的Shivkumar,您可以像在活动中使用的那样,在任何类型的服务中使用您的共享偏好.
相似
SharedPreferences preferences = getSharedPreferences("<PrefName>",
MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
有两种方法可以创建 的实例SharedPreference
:
情况1:
SharedPreferences preferences = activity.getSharedPreferences("<PrefName>", MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
案例2:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Run Code Online (Sandbox Code Playgroud)
请注意,如果您创建一个具有相同名称(案例 1)或相同上下文(案例 2)的首选项,即使在不同的地方,它仍然是相同的,并且显然可以共享数据。