Android 处理程序计时器不工作

Android 处理程序计时器不工作,android,timer,Android,Timer,我试图为我的程序创建一个小计时器,但下面的代码不起作用,我找不到问题 private int mInterval = 5000; private Handler mHandler; // at the bottom of my onCreate() methode: mHandler = new Handler(); startRepeatingTask(); } // on create ends here Runnable mStatusChecker = new

我试图为我的程序创建一个小计时器,但下面的代码不起作用,我找不到问题

private int mInterval = 5000; 
private Handler mHandler;

// at the bottom of my onCreate() methode:

    mHandler = new Handler();
    startRepeatingTask();
}
// on create ends here

 Runnable mStatusChecker = new Runnable() {
     @Override 
     public void run() {
         myview.loadUrl(readFromFile());
         mHandler.postDelayed(mStatusChecker, mInterval);
     }
 };

 void startRepeatingTask() {
     mStatusChecker.run(); 
 }
非常感谢您的帮助。

使用Handler.post或Handler.postdayed启动处理程序

private int mInterval = 5000; 
private Handler mHandler;

// at the bottom of my onCreate() methode:

mHandler = new Handler();
mHandler.post(mStatusChecker);
//mHandler.postDelayed(mStatusChecker, mInterval);//or use this method
//startRepeatingTask();
// on create ends here

Runnable mStatusChecker = new Runnable() {
    @Override 
    public void run() {
        myview.loadUrl(readFromFile());
      mHandler.postDelayed(mStatusChecker, mInterval);
    }
};

//void startRepeatingTask() {
//    mStatusChecker.run(); 
//}

您可能需要为存储中的读取文件添加android.permission.WRITE_EXTERNAL_存储,并为加载url添加android.permission.INTERNET。

类似的操作应该可以:

//set variables
private int mInterval = 5000; 
private Handler handler = new Handler();
//start runnable
runme.run();

private Runnable runme = new Runnable() 
{
    public void run() 
    {
         //repeat after 5000 milliseconds
         handler.postDelayed(this, mInterval );
    }
};

//stop runnable
handler.removeCallbacks(runme);
试试这个

  final Handler handler = new Handler();
        Runnable runnable = new Runnable() {
            public void run() {
                // do something here... 
                handler.postDelayed(this, 5000); // for interval...
            }
        };
        handler.postDelayed(runnable, 2000); 
试试这个

private int mInterval = 5000; 
private Handler mHandler;

// at the bottom of my onCreate() methode:

mHandler = new Handler();
mHandler.postDelayed(mStatusChecker,mInterval);
}
// on create ends here

 Runnable mStatusChecker = new Runnable() {
     @Override 
 public void run() {
     myview.loadUrl(readFromFile());
      //if you want to repeat the thread infinitely,then add below code also. Else remove it
     mHandler.postDelayed(mStatusChecker, mInterval);
 }
 };

你能发布一些事故日志吗?使用postDelayed,它可以工作5秒,当处理程序被称为Crassesit的fileNotFound异常时,代码找不到文件,请确保url.txt在目录中,同时,尝试检查权限,我发现权限被拒绝。这种情况发生是因为我从我的桌面记录了这一情况。在我的智能手机上,readFromFile功能运行良好。如果使用自定义ROM(如cyanogenmod),则会出现此异常。你可以试着补充,如果它不起作用,就没有办法阻止它。你的问题解决了吗?