我不确定这是否可行,或者我是否正确地考虑了这一点。在同一类的不同实现之间进行选择
在Displaying Bitmaps Efficiently的Android开发者培训中,AsyncTask
的定制版本用于使代码与HONEYCOMB
以下的Android版本兼容。
这个伟大的answer解释了在HONEYCOMB
之前和之后AsyncTask
操作之间的差异。本指南中提供定制版本的原因是,如果GridView
图像快速滚动,HONEYCOMB
(任务池)中的默认值将很容易与java.util.concurrent.RejectedExecutionException
相撞。在这种情况下,默认的帖子HONEYCOMB
版本(在附加线程上的串行执行)是必需的。
我可以通过在我的项目中使用更新版本的AsyncTask
(如开发人员培训示例中所做的)来轻松完成此操作,但这与以后的更改不兼容。
我想什么做的是以下几点:
如果版本
HONEYCOMB
或更高,使用该框架提供的AsyncTask
实施,而如果较早,使用 的AsyncTask
在我的应用程序中提供的实现。
这是可能的(以及如何)或应该不同地考虑它?
编辑: 我明白如何提供基于运行SDK_VERSION
条件。
我遇到的问题是AsyncTask
是一个抽象类,这意味着我必须提供一个实现。 例如我有一个名为AsyncTask
myTask
延伸AsyncTask
象下面这样:
public class myTask extends AsyncTask<Void, Void, Void> {
// Implementations for the abstract functions (doInBackground)
}
如何决定哪些AsyncTask
版本扩展?
请参阅编辑。这表明我很害怕,为我的整个应用程序中的每个'AsyncTask'类提供单独的实现。此外,不会代码示例返回两个不同的对象,所以所有的代码将不得不处理不同的对象类型的情况? – 2013-03-15 03:45:10
*对于每个定制的'AsyncTask'类(就像'myTask')是我的意思 – 2013-03-15 03:59:07
您可以使用'工厂设计模式'来决定基于SDK版本创建哪个对象。 – iTech 2013-03-15 04:02:40