让代码在x秒后执行 - Java,Android

时间:2014-10-19 16:21:21

标签: java android

我试图通过使用extends TimerTask的附加类来每秒执行一个方法。我认为它不起作用的原因是我试图执行一个最终将值返回给MainActivity的方法。这就是为什么:我通过使方法不返回任何东西来测试代码(只是在控制台上打印一些东西)并且它有效。

以下是使用返回方法查看代码的摘要:

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Timer timer = new Timer();
    timer.schedule(new doStuff(), 0, 1000);
}

public void method1(String string){
    //things happen
}

}

//----------------------------------------

class doStuff extends TimerTask{

@Override
public void run(){

    String string = stringMethod(); 
    MainActivity ma = new MainActivity();
    ma.method1(string);        
}

    public String stringMethod(){
        //gets the required string
        return "String";
    }
}

请注意,该方法本身并不会将值直接返回MainActivityrun()就是这么做的。

当我尝试在Android设备上运行代码时,LogCat会说notify()没有阻止某些内容。不确定。无法记住。 我只是想知道在解决这个问题之前,是否有更简单的方法不需要两个课程。

*抱歉愚蠢的名字。我只是为了演示而制作它们。

1 个答案:

答案 0 :(得分:1)

尝试使用处理程序:

final Handler handler=new Handler();

final Runnable runnable = new Runnable()
{
    public void run() 
    {
        //This will run every 1000ms. Put code here(UI safe)
        handler.postDelayed(this, 1000);
    }
};

handler.postDelayed(runnable, 1000);