activity 完成后使用上下文引用

Using context reference after activity be finished

我在页面中有一个完整的按钮,当用户单击按钮时,它将启动一个异步任务并将 activity 上下文传递给它,然后完成 activity 以关闭 activity 查看。

如果activity完成了,后台任务还需要使用传入的context引用会怎样?会不会有顾虑?或者有 alternative/better 的方式来应对这种情况。

如有任何建议,我们将不胜感激!

  1. 首先,在这种情况下你最好选择服务而不是异步任务。在您的情况下,服务应该在任务完成后自行停止。
  2. 即使您选择异步任务,也请尝试使用可以从 activity 上下文中获取的应用程序上下文,如下所示:

    activity_context.getApplicationContext();
    

    即使 activity 完成,应用程序上下文也会存在,并且它会避免内存泄漏。

  3. 如果你想在 activity 完成后安全地执行异步任务 运行,那么尽量不要在 postExecute(..) 方法中更新任何 UI,因为它会activity 的 UI 上的 运行 已经完成导致异常。尝试只在 doInBackground(...) 中执行 运行 在不同线程上的任何后台任务。

希望这能回答您的问题。