Android配置是否会在功能中发生变化?回调怎么样?

时间:2014-08-10 04:56:23

标签: android android-asynctask callback

当配置发生更改时,是否会中断主线程上当前正在执行的功能?或者在配置更改发生之前保证功能完成吗?

回调主线程的类似问题。如果您有一些AsyncTask从主线程上的某个函数启动,那么该函数是否可以在AsyncTask回调并开始在主线程上执行代码之前完成?

3 个答案:

答案 0 :(得分:1)

不,主线程上发生配置更改。它不会在执行其中一个函数的过程中发生。

AsyncTask是异步的。它可能无法在重新创建活动之前完成,并且不会被配置更改杀死。它将继续执行,如果它调用onPostExecute中的UI视图函数将导致异常(因为这些视图不再存在)。你需要保护它。 IMO其结束和重新创建配置变更活动的原因之一在于历史上前5个最愚蠢的设计决策。如果你有异步任务或线程,我强烈建议关闭它。它将简化您的代码并防止重做AsyncTask或在onPostExecute中出现问题。

答案 1 :(得分:1)

配置更改会导致活动被销毁并使用已保存的实例重新创建(如果有)。但是如果从活动的主线程中产生任何后台线程,那么它具有活动的隐式引用,除非该后台线程完成,否则活动不会获得GCd,但是肯定会创建另一个活动。如果你不断改变配置,最终会抛出OutOfMemoryException。

有关处理configChanges和backgruond任务的最佳方法,请参阅此链接:http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

答案 2 :(得分:0)

1

  

发生配置更改时,会中断当前的配置   在主线程上执行函数?或者保证功能   在配置更改发生之前完成?

答案:该功能保证完成

2

  

回调主线程的类似问题。如果你有一些   AsyncTask从主线程上的某个函数开始,   是该函数保证在AsyncTask调用之前完成   返回并开始在主线程上执行代码?

答案:该功能与配置更改无关(这就是为什么称为异步),即在配置更改发生之前无法保证完成。