【问题标题】:trying to call an other activity's method from asynctask试图从 asynctask 调用另一个活动方法
【发布时间】:2013-10-30 20:38:51
【问题描述】:

我有一个从网络下载文件的异步任务,当我预设 URL 时它工作正常。

URL url = new URL("http://www.mylocalweather.org.uk/ribblehead/clientraw.txt")

但是,当我尝试使用其他活动中定义的方法来返回 URL 时,它会失败。

URL url = null;
url = splash.gps();

该方法在过去和从其他活动调用时运行良好,并且当 URL 硬编码到异步中时下载功能运行良好,因此从异步任务调用该方法很容易出现问题,工作是什么为了这个?

这是它出现的错误

E/AndroidRuntime(16426): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()

任何帮助将不胜感激

非常感谢

【问题讨论】:

  • 你最好在服务中运行你的 GPS 代码,而不是在活动中——或者如果你这样做了,那么在创建时启动位置获取,一旦你得到一个就启动异步任务修复。

标签: android methods android-asynctask


【解决方案1】:

其他 Activity 不存在(如错误说明,onCreate 尚未被调用),因此无法使用您正在使用的任何系统服务来获取 URL。

要么让 AsyncTask 自己检索 URL,要么将信息从启动活动传递到托管 AsyncTask 的活动。

【讨论】:

  • 将 URL 从活动传递到异步任务中,它工作正常。谢谢!
【解决方案2】:

正如您的日志所说,当未创建 Activity 时,您不能使用 Activity 的方法。只需使用您的一些类并在那里定义您的方法,将您需要的参数传递给它。

【讨论】:

  • 其实日志不是这么说的。您可以随时使用活动的任何方法,只要它被实例化——在这方面,它只是另一个类。但是,提问者可能正在使用getSystemService(),并且在正确创建活动之前,这些调用不可用。
猜你喜欢
  • 2023-03-10
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多