目前我只是想习惯android的工作方式,直到现在我对事件以及xml文件与.java文件交互的方式有了基本的了解。
要知道我只是想尝试基本的东西,现在我有类似的东西:
TextView text = (TextView)findViewById(R.id.lol);
number mnumber = new number();
mnumber.change_in_number();
text.setText(mnumber.get_in_number() + "");
让我解释一下; number是我制作的类,其中包含整数varibale,获取值的函数(get_in_number)和将整数变量更改为随机值的函数(change_in_number)。 所有这些函数都适用于它们非常简单,但是当我运行代码时,它只发生一次(如预期的那样)。
我现在的问题是...... 究竟如何使这段代码每X秒重复一次? 您知道,在应用程序运行时,不需要任何事件就可以多次更改值。
我知道这个问题很简单,也很容易回答,但是现在我真的需要帮助才能开始。 在此先感谢您的帮助。
答案 0 :(得分:0)
这可能是你的头脑,但你需要创建一个带有while循环的单独线程来定期更新TextView。我没有编译并运行它,但它应该非常接近你想要的东西:
public class YourActivity extends Activity
{
private UpdaterThread updaterThread;
private Runnable changeNumberRunnable;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
changeNumberRunnable=new Runnable()
{
@Override
public void run()
{
YourActivity.this.updateNumber();
}
};
}
@Override
protected void onResume()
{
super.onResume();
updaterThread=new UpdaterThread();
updaterThread.start();
}
@Override
protected void onPause()
{
super.onPause();
updaterThread.kill();
}
private void updateNumber()
{
TextView text = (TextView)findViewById(R.id.lol);
number mnumber = new number();
mnumber.change_in_number();
text.setText(mnumber.get_in_number() + "");
}
private class UpdaterThread extends Thread
{
private boolean running;
public void kill()
{
running=false;
}
@Override
public void run()
{
running=true;
while(running)
{
//you can't change a view from a separate thread, so call the update on the main UI thread
YourActivity.this.runOnUiThread(changeNumberRunnable);
//sleep for 5 seconds, if we're interrupted then exit the loop
try { Thread.sleep(5000); }
catch(InterruptedException e) { running=false; }
}
}
}
}