Android 当AsyncTask仍在后台运行时,Activity.finish()会发生什么情况?

Android 当AsyncTask仍在后台运行时,Activity.finish()会发生什么情况?,android,android-activity,android-asynctask,Android,Android Activity,Android Asynctask,当AsyncTask仍在后台运行时,Activity.finish()会发生什么情况 它是否只是将活动从活动堆栈中弹出,然后等待销毁活动对象,直到AsyncTask完全完成(因为AsyncTask是我的活动的内部类) 另外,如果AsyncTask是一个公共的非内部类,没有对活动实例的引用,那么它的行为会有什么不同吗?我对线程做了同样的尝试,我的观察是它一直在运行线程。是的,AsyncTask将一直运行到完成。它将保留对活动的引用,防止活动被垃圾收集…除非它是一个静态内部类或完全独立的类,没有对活

当AsyncTask仍在后台运行时,Activity.finish()会发生什么情况

它是否只是将活动从活动堆栈中弹出,然后等待销毁活动对象,直到AsyncTask完全完成(因为AsyncTask是我的活动的内部类)


另外,如果AsyncTask是一个公共的非内部类,没有对活动实例的引用,那么它的行为会有什么不同吗?

我对线程做了同样的尝试,我的观察是它一直在运行线程。

是的,
AsyncTask
将一直运行到完成。它将保留对
活动
的引用,防止
活动
被垃圾收集…除非它是一个静态内部类或完全独立的类,没有对
活动
的引用或指向
活动
的任何内容(例如
视图
)@commonware但是,如果调用在UI线程上运行的
AsyncTask
的方法之一,并操纵活动的UI视图,调用活动的方法,如
findViewById(活动布局中的R.id.something)
,会发生什么情况?它仍然有效还是默默地失败了?@GianniCostanzi:这是不可能抽象地回答的,对不起。@Commonware我试图用一个新问题更好地解释我的问题@Gianni你是否根据你最后的评论提出了一个新问题。讨论进入了一个有趣的边缘,但之后没有评论!