AsyncTask()和Handler()之间的主要区别是什么?

时间:2016-05-30 12:46:36

标签: java android multithreading android-asynctask

我是android app开发的初学者。

我必须在我的应用程序中使用ping测试来检查可用的互联网连接,因为我发现这个方法非常有用,但我在许多地方读过我应该使用AsyncTask()方法或Handler()方法作为UI上的ping测试线程可能会冻结我的应用程序。

但我并没有区分这两者来决定我应该使用哪一个。我发现在AsyncTask中,我有像doInBackground()和onPostExecute这样的方法,它有助于与UI线程的交互和在另一个线程中运行的进程。

但是我没有在Handler()方法中获得这样的方法。

Handler handler = new Handler();
Runnable runnable =new Runnable() {
 @Override
 public void run() {
     handler.postDelayed(this,1000);
 }
};
handler.post(runnable);
  1. 我没有得到Handler()中的哪个方法在后台运行,哪个方法有助于让应用程序在后台运行,就像我在AsyncTask()中找到的那样。
  2. 我不明白这两者之间的区别。

1 个答案:

答案 0 :(得分:1)

它们之间的简单和主要区别是

AsyncTask用于执行一些后台任务,并将结果发布到具有/不具有进度更新的UI线程。

如果您不关心UI,那么处理程序/线程更合适。