-4

我是 Android 开发的初学者,我正在尝试制作一个应用程序,其要求是在文本框中显示随机数,并以一秒或任何可编程延迟继续显示随机数,直到切换按钮处于“ ON' 状态。有没有人对此有建议,或者如果可能的话分享部分源代码会很好。

我需要的另一个建议是关于任何从 android 开发开始的好书以及它的内部细节。如果有任何关于 android 的书,就像我们对其他开发语言的书一样(例如,完全参考 Java、完全参考 C、C++ 等)

提前致谢

4

3 回答 3

1

我读过一些 Andoid 书籍,我强烈建议Android in Practice。读完之后,你就会知道,大多数在 StackOverflow 上提问的人都会从这本书中受益匪浅。这是极好的价格价值,作者肯定知道他们在写什么。

编辑:关于实施(更新,消除布尔)

public final class MyActivity extends Activity implements Runnable {
    private Handler uiThreadHandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // basics
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity_layout);
        // find text widget here, store in editText as also required in Chintan's solution
        // get the current activity's handler, it's the UI thread
        uiThreadHandler = new Handler();
        // initiate the updates if that's the initial state
        scheduletUpdate();
        // register callbacks for button etc as required also in Chintan's solution
    }
    @Override
    public void run() {
        //update your editText field here -- this is run in the UI thread so it's safe!
        scheduleUpdate();
    }
    private void scheduleUpdate() {
        uiThreadHandler.postDelayed(this, 1000); // 1000 ms
    }
    // etc, some stuff missing
}

编辑:关于如何停止执行方法的调度,您使用以下代码,这在处理程序文档run()中应该很明显(更新,消除布尔值):

uiThreadHandler.removeCallbacks(this);
于 2013-01-22T09:35:32.630 回答
0

作为初学者,我建议您阅读http://www.mybringback.com/series/android-basics/本教程,您将能够按照自己的要求去做。他们还提供易于遵循的视频教程。

于 2013-01-22T09:40:13.233 回答
0

使用Thread喜欢,

class MyThread extends Thread
{
    private volatile boolean isRunning = false;

    public synchronized void requestStop() {
        isRunning = true;
    }

    @Override
    public void run() {
        //place code here...
        try {
            while (!isRunning) {
                // do your coding
                handler.sendMessage(handler.obtainMessage(WhatAbout.CHANGE_TEXT.ordinal(), 0, 0));
                Thread.sleep(1000 * 1); //1000 ms = 1 sec
            }


        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

现在定义以下代码来处理多条消息。

public enum WhatAbout {
    CHANGE_TEXT
}

public WhatAbout[] wa = WhatAbout.values();

然后使用 [Handler][1],它可以帮助您进行沟通BackgroundThreadUIThread. 如果不使用处理程序,您将无法更改UI.

将以下代码放入您的onCreate方法中。

handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    if (msg.what < wa.length) {
    switch (wa[msg.what]) 
    {
    case CHANGE_TEXT:
         editText.setText(randomVariable);
         break;
    }
  }
};

当您切换关闭时,使用以下代码停止线程。

if (thread != null) {
    thread .requestStop();
    thread = null;
}
于 2013-01-22T09:46:57.720 回答