在我的 mainActivity 中,这是我的应用程序的唯一活动,我正在创建下面的处理程序并在其中运行一个可运行文件。
我对处理程序及其运行位置有一些误解。
查看代码
Handler handler;
@Override
protected void onCreate(Bundle bundle)
{
handler = new Handler();
handler.postDelayed(r , 5000);
}
Runnable r = new Runnable()
{
@Override
public void run() {
FetchServerAndUpdateStatus(); //network stuff in here
handler.postDelayed(r , 5000);
}
}
- 我假设此代码仍将在 UI 线程中运行,并且我将无法在其中进行任何网络调用,不是吗?
- 如果是,我该怎么办?创建和使用单独的线程?
- 如果我创建了一个新线程,如何运行 postdelayed 方法?该线程没有延迟发布?
- 不使用 handler/runnable 而是使用 TimerTask 和 Runnable 是更好的方法吗?或者,就像上面的 handler/runnable 一样,它也将在 UI 线程上运行,除非在单独的线程中创建。