【发布时间】:2025-12-22 06:25:10
【问题描述】:
我正在尝试通过共享首选项将数据从服务类传递到片段类。
我没有遇到语法错误,但是有一个逻辑错误,因为我没有在 StepsFragment 中使用我想要的更新的计步器更新文本视图。
我正在StepsService.java 中运行计步器,并尝试将信息传递给StepsFragment.java。
我尝试了以下解决方案:
Access shared preference from a service
Can I get data from shared preferences inside a service?
这是我在StepsService.java中的代码
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true){
// ------- code for task to run
SharedPreferences.Editor editor = getSharedPreferences("DeviceToken",MODE_PRIVATE).edit();
editor.putString("DeviceToken",String.valueOf(stepsCounter));
editor.apply();
addNotification(String.valueOf(stepsCounter));
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
return START_NOT_STICKY;
}
这是我在StepsFragment.java中的代码
public void startService(View view) {
Intent serviceIntent = new Intent(getActivity(),StepsService.class);
getActivity().startService(serviceIntent);
SharedPreferences prefs = this.getActivity().getSharedPreferences("DeviceToken", MODE_PRIVATE);
String deviceToken = prefs.getString("DeviceToken", null);
tv_steps.setText(deviceToken);
}
【问题讨论】:
标签: android android-fragments android-service sharedpreferences