android – 如果AsyncTask不是内部类… – 一些问题

前端之家收集整理的这篇文章主要介绍了android – 如果AsyncTask不是内部类… – 一些问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1)我不高兴为什么 Android的样本几乎使用AsyncTasks作为私有内部类.我知道使它成为内部类是方便的,但它使我们的类文件更长,难以阅读.货架行业的样品应用程序甚至有845行.你不觉得这是坏的设计还是坏的建筑?

2)如果我使我的ScanStorageTask外部类,我必须传递给它?整个活动还是只使用小部件?

示例:如果我必须在ScanStorageTask中使用WebView,Button和ProgressBar.
我用这个

ScanStorageTask task = new ScanStorageTask(this); // "this" is activity reference,then get the webView,button,progressBar from it.

或这个:

ScanStorageTask task = new ScanStorageTask(webView,progressBar);

解决方法

在外部做任何事情都没有错,实际上可能是一个更好的设计.传递UI元素是一种紧密的耦合,当您有一个非常大的代码库时,可以让您陷入困境.

为什么不在外部使用UI控件采用的“监听器”模式?使您的ScanStorageTask成为其自己的类,使用onComplete方法创建一个OnCompleteListener接口,并将其传递到您的ScanStorageTask实例(公开一个setOnCompleteListener方法或某种事情).那么onPostExecute可以这样做:

if(onCompleteListener != null)
  onCompleteListener.onComplete(data);

这样,您可以根据数据在活动中定义UI更新.这是更好的分离关注点,并将保持你的代码行每一班,因为这似乎是你喜欢的.如果你还没有这个,你可以创建一个代表你需要传入和传出的数据的类,这就是你作为执行方法和onPostExecute传递给onComplete的参数传递给任务.

猜你在找的Android相关文章