我的Android应用中有一个使用计时器的服务类。定时器设置为以1分钟(60000毫秒)的延迟运行。我希望用户能够动态更改此延迟。通常,在java中我可以使用timer.setDelay();但是Android没有这个功能。
到目前为止的服务类:
public class LocalService extends Service
{
Timer timer = new Timer();
int newDelay;
public IBinder onBind(Intent arg0)
{
return null;
}
public void onCreate()
{
super.onCreate();
startService();
}
private void startService()
{
timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
mainTask();
}
}, 0, 60000);
}
private void mainTask()
{
//do something
}
private void shutdownService()
{
if (timer != null) timer.cancel();
}
public void onDestroy()
{
super.onDestroy();
shutdownService();
}
private void readNewDelay()
{
InputStream in = openFileInput("updateDelay");
if(in != null)
{
InputStreamReader input = new InputStreamReader(in);
BufferedReader buffreader = new BufferedReader(input);
newDelay = Integer.parseInt(buffreader.readLine()) * 60000; //value in file is saved in minutes
}
in.close();
}
}
我想要的延迟由活动保存到文本文件中。然后,我希望服务读取此文件并相应地更新其计时器延迟。
答案 0 :(得分:1)
您必须销毁计时器对象并创建一个新对象。
不要忘记手机睡觉时计时器不会运行。更好的方法是使用Alert而不是计时器。