在处理AsyncTask
和屏幕旋转时,我仍在尝试找到“正确”的设计模式。我阅读this commonsware blog post链接到this code,但onRetainNonConfigurationInstance方法现已弃用。文档中的神奇句子指出“在切换到下一个活动期间没有消息处理的保证简化了对活动对象的使用......”这是关于这个方法做了什么的真正关键部分。我没有看到使用setRetainInstance()能够实现同一目标的建议。
我还看到帖子such as this one,其中第一个答案实际上是一个糟糕的黑客,只覆盖了90%的用例(即如果你的任务正在运行然后打个电话会发生什么,该解决方案将无法正常工作)。
建议查看AsyncTask示例的代码here,但除非我是密集的,否则我看不到它们在应用程序的任何位置使用(在Google代码上使用search feature时)
这个问题显然已被多次询问,但我没有看到最新的,适当的asnwer。如果存在,请回答并关闭,如果必须,但至少回答! :)
This is another link会审核相同的弃用方法。
答案 0 :(得分:1)
使用弃用方法没有任何内在错误。如果您的AsyncTask至关重要,如果您的方向发生变化,则无法取消并重新启动,您应该考虑使用服务。
答案 1 :(得分:1)
它仅在Honeycomb及以上版本中被弃用,并且它也可以正常使用。新的'方法是使用加载器(您可以使用兼容性库来获取HC前版本中的那些)或保留的片段。如果您致电setRetainInstance()
,则实例会按原样传递给新创建的活动(他们实际使用兼容性库的onRetainNonConfigurationInstance
中的FragmentActivity
),因此它实际上与你现在拥有什么。