Android计时器设置延迟

时间:2010-10-31 14:39:04

标签: android

我的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(); 
    }
}

我想要的延迟由活动保存到文本文件中。然后,我希望服务读取此文件并相应地更新其计时器延迟。

1 个答案:

答案 0 :(得分:1)

您必须销毁计时器对象并创建一个新对象。

不要忘记手机睡觉时计时器不会运行。更好的方法是使用Alert而不是计时器。