我运行的服务每x分钟更新一次数据,我希望用户选择更新频率(每10分钟30分钟......)。我使用了共享偏好,但似乎该服务不会改变更新的频率。 这是我的服务代码:
public void onCreate()
{
super.onCreate();
_startService();
// if (MAIN_ACTIVITY != null) Log.d(getClass().getSimpleName(), "FileScannerService started");
}
/*
* starting the service
*/
private void _startService()
{
timer.scheduleAtFixedRate(
new TimerTask() {
public void run() {
try{
doServiceWork();
Thread.sleep(UPDATE_INTERVAL);
}catch(InterruptedException ie){
Log.e(getClass().getSimpleName(), "FileScannerService InterruptedException"+ie.toString());
}
}
},
DELAY_INTERVAL,
UPDATE_INTERVAL);
Log.i(getClass().getSimpleName(), "FileScannerService Timer started....");
}
这是我的共享偏好代码:
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String interval= SP.getString("synchronisation", "1");
if(interval.equals("1")) UPDATE_INTERVAL= 30000;
if(interval.equals("2")) UPDATE_INTERVAL= 60000;
if(interval.equals("3")) UPDATE_INTERVAL= 120000;
我尝试将sharedpreferences代码放在我的服务方法中的任何地方,但它不起作用。也许我的方式错了。 在此先感谢您的帮助。
答案 0 :(得分:0)
我找到了该问题的解决方案,如果您使用共享偏好来更改计时器的更新延迟,则应该使用run()
方法进行服务工作,而不是调用其他方法。例如:在我的代码中,我调用了方法do service work()
,当我删除方法调用并直接放入此方法的代码时,它就起作用了。
希望我已经解释清楚了。