是否可以从Runnable执行AsyncTask?根据我的经验,它可以完成,但不安全。当我的应用程序第一次运行时,我的AsyncTask从Runnable运行正常。但是当应用程序移动到后台时,然后带回来我得到“无法在未调用Looper.prepare()的线程内创建处理程序”。
这是我正在尝试做的事情: 我在onCreate中使用MapView并调用runOnFirstFix(Runnable)。 My Runnable调用AsyncTask来执行Web服务调用,该调用根据位置返回一些数据。 我将应用程序移动到后台(通过点击主页按钮),一段时间后我再次向前移动我的应用程序,并且我在我的AsyncTask上调用execute()时获得异常。
首先,为什么runOnFirstFix会再次被执行?其次,为什么第二次导致异常呢? 我猜测生命周期的某些部分我不明白。
感谢。
答案 0 :(得分:0)
最初我不明白需要从UI线程调用AsyncTask。所以当runOnFirstFix第二次运行时,它来自一个不在UI线程上的Runnable。为了解决这个问题,我在第一个内部创建了另一个Runnable来运行AsynchTask。
我的runOnFirstFix似乎被调用两次的原因仅仅是因为我正在创建它的新实例。