java - 内部类扩展 Asynctask,外部类扩展 Activity,然后从另一个 Activity 扩展外部类。这是一个不好的做法吗?

标签 java android asynchronous

这是不好的做法吗?

import android.app.Activity;
import android.os.AsyncTask;

public abstract class Asynch extends Activity {
    public abstract void doInBackgroundAbstract();
    public abstract void onPostExecuteAbstract();
    protected class AsynchtaskSubClass extends AsyncTask {
        @Override
        protected Object doInBackground(Object... arg0) {
            doInBackgroundAbstract();
            return null;

        }
        protected void onPostExecute(Object result){
            onPostExecuteAbstract();
        }
    }

}

public class SomeActivity extends Asynch {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_classes);
        new AsynchtaskSubClass().execute();
    }
            private Document doc;
        @Override
        public void doInBackgroundAbstract() {
            // NETWORK OPERATION GOES HERE!
            try {
                doc = Jsoup.connect("mySite").get();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        @Override
        public void onPostExecuteAbstract() {
            // Update UI Thread Here
            TextView myTextView = new TextView(SomeActivity.this);
            myTextView.setText(doc.select("a[href]").attr("abs:href").toString());
            setContentView(myTextView);

        }

这对我来说看起来干净多了。我不必继续创建内部异步任务或创建单独的类来运行异步任务。如果我想要一个在许多 Activity 中重用的异步任务,那么我只需扩展异步并重写抽象方法,并将其保留为单独的类。他们这样做有什么问题吗?我看到的唯一问题是,如果我需要在一个 Activity 中使用两个或多个异步任务。

最佳答案

正如您已经指出的,您的 Activity 中不能有多个异步任务。除此之外,您的类(class)只能扩展另一个类(class),而不能扩展更多类(class)。 因此,如果您想要一个扩展 ListActivity 并具有异步任务的 Activity ,您必须创建另一个抽象异步(“listActivityAsynch”)类,依此类推。
另一件事是,其他程序员仅通过查看 SomeActivity 并不容易理解您的代码。他们首先必须了解异步并了解您使用的不常见设计。如果您是唯一使用此代码的人,那可能没问题。但如果其他人必须使用它,最好遵循常见的 Android 实践,即在内部类中进行制作。

关于java - 内部类扩展 Asynctask,外部类扩展 Activity,然后从另一个 Activity 扩展外部类。这是一个不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305509/

相关文章:

javascript - 如何延迟特定 Controller (不是路由)的实例化?

java - 解析Java字符串特殊字符错误

java - SASS 在 unicode 内容前加上反斜杠 (\)

android - surfaceview 容器中的 onDraw 会导致视频失效吗?

android - onStop() 触发时我必须保留 Activity 数据吗?

JavaScript 生成器风格的异步

c++ - std::async 指定线程的模拟

java - 使用 RxAndroid 进行链 2 次调用并重试

java - eclipse mtj 内存监控

java - Android:ListView 告诉我它已填充但未显示项目