我正在编写一个 android 应用程序,我需要能够定期/连续地做某些事情。我来自 C/C++ 嵌入式固件背景,这种新奇的做事方式需要一些时间来适应。似乎Android中没有“主循环”之类的东西,一切都是事件驱动的……我也明白,默认情况下,你编写的所有代码都在GUI线程上运行,我可能应该创建一个新线程执行相当于“主循环”...
到目前为止,我所拥有的是 AsyncTask 类的实现,它的“doInBackground”方法包含一个无限循环(我的主循环),我创建了这个类的一个实例并在我的应用程序启动时立即运行它。我遇到的问题是在这个线程和用户界面之间的交互......当我的主循环线程中发生某些事情并且我想更新 GUI 时,我知道我必须调用“publishProgress”,它在 GUI 线程上执行. 这有一些问题,主要是我在这个“onProgressUpdate”方法中尝试做的许多事情都不起作用,或者没有在可预测的时间内发生。
我的问题,有没有更好的方法来完成我想做的事情?一般来说,当大多数人在他们的应用程序运行时想要定期和/或连续运行代码时会做什么,这些代码必须及时与用户界面交互(我的意思是及时,零延迟)。
谢谢你。
public class MainLoopThread extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... arg0)
{
while(true)
{
//Do stuff
//Update GUI
publishProgress();
}
}
protected void onProgressUpdate(Void...voids)
{
//Update GUI
}
}