我是 Android 开发的初学者,我正在尝试制作一个应用程序,其要求是在文本框中显示随机数,并以一秒或任何可编程延迟继续显示随机数,直到切换按钮处于“ ON' 状态。有没有人对此有建议,或者如果可能的话分享部分源代码会很好。
我需要的另一个建议是关于任何从 android 开发开始的好书以及它的内部细节。如果有任何关于 android 的书,就像我们对其他开发语言的书一样(例如,完全参考 Java、完全参考 C、C++ 等)
提前致谢
我是 Android 开发的初学者,我正在尝试制作一个应用程序,其要求是在文本框中显示随机数,并以一秒或任何可编程延迟继续显示随机数,直到切换按钮处于“ ON' 状态。有没有人对此有建议,或者如果可能的话分享部分源代码会很好。
我需要的另一个建议是关于任何从 android 开发开始的好书以及它的内部细节。如果有任何关于 android 的书,就像我们对其他开发语言的书一样(例如,完全参考 Java、完全参考 C、C++ 等)
提前致谢
我读过一些 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);
作为初学者,我建议您阅读http://www.mybringback.com/series/android-basics/本教程,您将能够按照自己的要求去做。他们还提供易于遵循的视频教程。
使用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],它可以帮助您进行沟通BackgroundThread
和UIThread
. 如果不使用处理程序,您将无法更改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;
}