gpt4 book ai didi

android - 在线程中更新 UI Activity

转载 作者:行者123 更新时间:2023-11-29 02:10:37 25 4
gpt4 key购买 nike

这是我的问题。我正在编写一个 android 应用程序,它需要显示它正在运行的 Activity 的时间。因此,我创建了一个从 Activity 中调用的新线程。但是,当我在模拟器中启动应用程序时,似乎从未加载 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;
}
}
}

正如我所说,这些是相关的代码 fragment 。问题是,如果我运行它,Activity 会保持黑色 - 我只是得到带有应用程序名称的 header ,仅此而已。通过日志记录,我可以确认线程正在运行,但没有显示任何其他内容。

你能帮帮我吗,我是 android 的新手。
非常感谢 - 已经提前。

最佳答案

调用 timer#run() 将执行此操作,在 UI 线程中调用 #run() 方法。您需要通过调用 #start() 来启动您的线程 - 然后新线程将执行您期望的操作。

进一步:永远不要调用 Thread#start() 两次,它实际上不会重新启动线程,只会让您的应用程序崩溃。如果您打算从 onResume 启动线程,您需要在那里分配一个新线程。

顺便说一句,考虑改用 AsyncTask。

Br,延斯

关于android - 在线程中更新 UI Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7659980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com