Android 异步任务 - 哪个活动引发了它?

发布于 2024-11-03 07:36:45 字数 178 浏览 1 评论 0原文

我面临着一个异步任务的问题,但我需要它使用两次,因为每次我更改 GUI 的不同部分(更新进度条)。

有什么方法可以在 if - else 子句中确定它调用哪个活动,然后为它们中的每个活动创建适当的函数?

编辑:呵呵,答案就在这里,但现在没有......

谢谢

I am facing problem of having one async task, but I need it use twice, because each time I change different part of GUI (updating progress bar).

Is there any way how to determine in if - else clause, which activity does it call and then make appropriate function for each of both of them?

Edit: huh, answer was here and now there isn't...

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眸中客 2024-11-10 07:36:45

您可以保存一个成员变量,其中包含其启动的活动/上下文。

//pseudocode
AsyncTask task = new AsyncTask();
task.mActivity = this;
task.execute();

doInBackground 内只需检查活动:

//pseudocode
if (mActivity instanceof MyActivity) {
    // ....
} else {
    // ....
}

You can hold a member variable which contains the activity/context it is started from.

//pseudocode
AsyncTask task = new AsyncTask();
task.mActivity = this;
task.execute();

Inside doInBackground just check the activity:

//pseudocode
if (mActivity instanceof MyActivity) {
    // ....
} else {
    // ....
}
无风消散 2024-11-10 07:36:45

从 AsyncTask 实现中提取代码并将其委托给 Activity。示例:

public interface MyDelegate {
    public void updateProgress(....)
}

您的 AsyncTask 接受委托并在适当时调用它:

public class MyAsyncTask .... {
    public MyAsyncTask(MyDelegate myDelegate) { ... }

    // somewhere in your code (probably onProgressUpdate)
    myDelegate.updateProgress(...)
}

您的 Activity 实现该委托:

public class MyActivity extends Activity implements MyDelegate {
   public void updateProgress(...) {
       // update ui
   }

   // somewhere in your code:
   new MyAsyncTask(this).execute(...);
}

Extract the code from the AsyncTask implementation and delegate that to the Activity. Example:

public interface MyDelegate {
    public void updateProgress(....)
}

Your AsyncTask takes a delegate and calls it when appropiate:

public class MyAsyncTask .... {
    public MyAsyncTask(MyDelegate myDelegate) { ... }

    // somewhere in your code (probably onProgressUpdate)
    myDelegate.updateProgress(...)
}

Your Activity/ies implement/s the delegate:

public class MyActivity extends Activity implements MyDelegate {
   public void updateProgress(...) {
       // update ui
   }

   // somewhere in your code:
   new MyAsyncTask(this).execute(...);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文