Android - 如何在没有任何事件的情况下发生事情

时间:2014-06-14 23:46:59

标签: java android

经过一段时间的编程后,我决定下载Android SDK,看看我是否应该开始关注移动开发以开始赚钱。

目前我只是想习惯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秒重复一次? 您知道,在应用程序运行时,不需要任何事件就可以多次更改值。

我知道这个问题很简单,也很容易回答,但是现在我真的需要帮助才能开始。 在此先感谢您的帮助。

1 个答案:

答案 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; }
                }

            }
        }
    }