【发布时间】:2011-10-05 10:34:45
【问题描述】:
这是我的问题。我正在编写一个 android 应用程序,它需要显示它正在运行的活动的时间。因此,我创建了一个从活动中调用的新线程。但是,当我在模拟器中启动应用程序时,似乎从未加载过 Activity。也许你们可以在这里帮助我。以下是相关代码:
public class ActivityStartTracker extends ActivityBasic {
TimerThread timer;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
timer = new TimerThread();
}
protected void onResume() {
super.onResume();
registerReceiver(broadcastReceiver, new IntentFilter(
ServiceLocator.BROADCAST_ACTION));
timer.run();
}
protected void onPause() {
super.onPause();
unregisterReceiver(broadcastReceiver);
if (timer.isRunning()) {
timer.interrupt();
}
}
class TimerThread extends Thread {
boolean isRunning = false;
public TimerThread() {
}
@Override
public void run() {
int seconds = 0;
isRunning = true;
while (isRunning) {
try {
Log.d(TAG, "Timer is running for : " + seconds);
seconds++;
Thread.sleep(1000);
} catch (InterruptedException e) {
isRunning = false;
}
}
}
public boolean isRunning() {
return isRunning;
}
}
}
就像我说的,这些是相关的代码片段。 问题是,如果我运行它,Activity 将保持黑色 - 我只是得到带有应用程序名称的标题,仅此而已。通过日志记录,我可以确认线程正在运行,但没有显示任何其他内容。
你能帮帮我吗,我对android很陌生。
非常感谢 - 已经提前了。
【问题讨论】:
-
喂!我没有看到您更改 gui 的代码?我想更新线程中的 gui,你必须使用
runOnUIThread() -
是的——在我尝试添加显示计时器的新功能之前,GUI 运行良好——因此我认为我可以删除所有 findView() 和 setText() 方法。我只是想展示问题的核心——所以你们不必阅读所有不必要的代码行。
标签: android multithreading android-activity