【问题标题】:passing control from activity when using asynctask使用 asynctask 时从活动传递控制
【发布时间】:2013-09-06 22:46:45
【问题描述】:

我的应用中有以下设计

  • 有一个 BaseActivity,我可以在其中执行一些常见任务
  • 所有其他活动都扩展了 BaseActivity,因此我不需要在所有其他活动中复制常见任务的代码。
  • BaseActivity 中定义的一个常见任务是用户登录到他/她的帐户的登录操作。由于涉及到一些后端数据库操作,我在编写这些方法时使用了 AsyncTask。

现在我的问题是,在我的子活动中,如果我调用 BaseActivity 的登录方法,那么我如何将控制权传递回我的子活动。我的应用程序中的任何活动都可以调用登录方法,因此每个活动都需要从 BaseActivity 确认成功登录,以便可以执行这些子活动中的特定任务。

非常感谢任何建议/帮助

【问题讨论】:

  • 参见This answer 底部是关于在AsyncTask 完成时使用interface 发送回调。在需要它的Activities 中实现它

标签: android android-asynctask android-activity


【解决方案1】:

您可以在 BaseActivity 类中有两个方法,分别是 performLogin() 和 postLogin(),如下所示:

public void performLogin()
{
  // custom code    
  LoginTask task = new LoginTask(this); // pass reference of the activity to Asyntask
  // execute task
}

其中的LoginTask 有一个构造函数,它接受BaseActivity 类型的参数。让您的 AsyncTask(上例中的 LoginTask)然后调用 activity.postLogin() 方法。您可以根据孩子活动的需要覆盖此方法。

【讨论】:

  • 非常好的建议。效果很好。谢谢。赞成并接受的答案。
  • 很高兴知道它有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2013-01-28
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多