【问题标题】:parameter in runOnUiThreadrunOnUiThread 中的参数
【发布时间】:2016-02-20 09:27:00
【问题描述】:

我的安卓程序中有一个计时器:

 timer1= new Timer();
        timer1.schedule(new TimerTask() {
            @Override
            public void run() {
                TimerMethod();
            }

        }, 0, 3000);


private void TimerMethod()
{
    this.runOnUiThread(Timer_Tick);
}


private Runnable Timer_Tick = new Runnable() {
        public void run() {
            //my code
}}

我想从 TimerMethod 向 Timer_Tick 发送一个参数,换句话说,我想要一个 Timer_Tick 的输入参数,

我将代码更改为:

int input1=10;
 timer1= new Timer();
            timer1.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod(input1);
                }

            }, 0, 3000);



  private void TimerMethod(int myinput)
    {
        this.runOnUiThread(Timer_Tick);
//How pass myinput to Timer_Tick????????????

    }

我该怎么办?

【问题讨论】:

标签: android timer parameters ui-thread


【解决方案1】:

您可以创建一个新类 (MyTimerTask),该类实现 Runnable 接口,并具有run 方法。在此类中,将您的参数添加为类字段之一,并在其构造函数中设置所需的值。其余的将非常简单明了:

public class MyTimerTask implements Runnable
{
    private String param ;

    public MyTimerTask(String param)
{
 this.param = param
}

@Override
public void run()
{
//your code
}
}

MyTimerTask mytimertask = new MyTimerTask(myparameter);

timer1.schedule(mytimertask,0,3000) ;

【讨论】:

  • 谢谢,但我不想再写一个类,有没有其他办法?
  • 你可以让你的参数成为当前类的静态成员,这样run方法就可以访问它
  • 那么你应该采用我的解决方案并制作四个不同的 MyTimerTask 对象。我不明白你为什么不想创建另一个类。
猜你喜欢
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多