【问题标题】:Trigger async tasks from other activity?从其他活动触发异步任务?
【发布时间】:2012-05-21 09:46:30
【问题描述】:

如何从我的主要活动中触发另一个活动中包含的 AsyncTask?

public class DatabaseActivity extends Activity {
    private class DbReader extends AsyncTask<..> {
        @Override
        protected List<MyData> doInBackground(..) {
            //execute query etc
        }
    }

    private class DbSaver extends AsyncTask<..> {
        @Override
        protected void doInBackground(MyData data) {
            //save to dn
        }
    }

    private class DbRemover extends AsyncTask<..> {
        @Override
        protected void doInBackground(MyData data) {
            //remove in db
        }
    }
}

如何从 MyApplication 触发扩展 Activivy?

【问题讨论】:

  • 你真的需要这个 AsycTasks 在这个活动中吗?

标签: java android android-asynctask android-activity


【解决方案1】:

我认为你应该use seperate class where AsyncTask is alone.

当您的应用需要多个 AsyncTask 时,您应该使用单独的 AsyncTask 并调用它。

private class CommonTask extends AsyncTask<..> {
   public CommonTask(Foo foo){

       } 

        @Override
        protected void doInBackground(MyData data) {
            //remove in db
        }
    }

不,您可以为构造函数传递不同的值,并从 Activity 中检查您想要的数据保存或删除或其他任何内容...

【讨论】:

  • 你的意思是不同的 doInBackground 方法采用不同的参数,然后只调用 myTask.execute(params)?如果是这样,我认为如果您通过传递不同的参数来获得不同的操作,那么在代码中将会非常混乱。例如传递一个字符串 > 保存;传递我的对象 > 删除;传递 id > fetch.
  • @membersound 如果您感到困惑,然后创建单独的每个类,例如 savetask,removetask ...这是您的最后一个解决方案
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多