在我的Android应用程序中,我想严格遵循Android准则。因此,在执行AsyncTask
之后,我有2个选项来更新带有结果的UI。
AsyncTask
,并在onPostExecute
中更新这些元素。那么,哪种方法更好,为什么呢?
答案 0 :(得分:1)
你必须真正理解线程,如果它是一个简单的回调监听器,它就不会改变运行代码的线程。如果是这种情况,则方法(1)和(2)或多或少相同。
如果你实际上是指使用Handler
,那么它有一些差异,Handler
实际上排队回调并稍后在Handler
所在的线程中调用它创建
但是,由于OnPostExecute
已经在UI Thread
中,这意味着可以将UI元素更新为(2)。您应该注意的最重要点是,Activity
可能会在OnPostExecute
被调用时被销毁。如果是这样,则不应使用创建Activity
的{{1}}引用修改UI。
答案 1 :(得分:0)
很长的后台任务在onBackground
AsyncTask
函数上运行。在onBackground
结束时,调用onPostExecute
,您应该在其中进行UI更改。
如果您的活动中有AsyncTask
,那么它可以正常工作。您可以更新onPostExecute
内的UI视图,因为您可以访问它们。
如果您的AsyncTask
是一个单独的课程,并且您无权访问您的活动的UI视图,那么您可以在onPostExecute
功能中将结果返回到Activity
和在那里更新UI。
答案 2 :(得分:0)
如果您想在任务完成后更新您的ui,这两种情况都可以正常工作。 onPostExecute
还处理主线程中的代码。哪种方法更好?这取决于您希望如何组织代码结构。
onPostExecute
内更新它们,因为您的代码会更简单明了。