我是Android开发的初学者,我正在尝试创建一个应用程序,其要求是在文本框中显示随机数,并继续显示带有一秒或任何可编程延迟的随机数,直到切换按钮为止处于“开启”状态。有没有人对此提出建议,或者如果可能的话,共享部分源代码会很好。
我要求的另一个建议是关于任何一本好书,也可以从内部细节开始进行android开发。如果Android上有任何类型的书,我们可以使用其他开发语言(例如,完全引用Java,完全引用C,C ++等)
提前致谢
答案 0 :(得分:1)
我已阅读一些Andoid书籍,我强烈建议Android in Practice。阅读完之后,你就会知道大多数人在StackOverflow上提问时都会从本书中获益。它的价格非常优惠,作者肯定知道他们在写什么。
编辑:关于实施(UPDATED,消除布尔值)
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()
方法的计划,您可以使用以下代码,这应该从Handler documentation中明显看出(UPDATED,消除布尔值) ):
uiThreadHandler.removeCallbacks(this);
答案 1 :(得分:0)
作为一个初学者,我建议你通过http://www.mybringback.com/series/android-basics/这个教程,你将能够做你自己提出的问题。他们也有易于理解的视频教程。
答案 2 :(得分: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],它可以帮助您传达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;
}