【问题标题】:android asynTask to activity problem ?android异步任务到活动问题?
【发布时间】:2011-08-02 02:15:01
【问题描述】:

我开发了一个 GPS 应用程序。我的应用程序有一项服务,负责通过服务器将 GPS 发送到服务器....

Service -----> AysncTask(sendServer)
// then in service i broadcast some variable

myFilteredResponse = new Intent(GPS_FILTER);
        myFilteredResponse.putExtra("latitude",      Double.valueOf(twoFormat.format(location.getLatitude())));
        myFilteredResponse.putExtra("longitude", Double.valueOf(twoFormat.format(location.getLongitude())));
        myFilteredResponse.putExtra("network", MyGPS.cur_network_status);

然后在我的 Activity 中创建一个广播接收器来接收所有这些变量 n 它工作正常,然后当我们有新的 lat n lon 时我的 UI 会改变

在我的 AysncTask 中,当发送到服务器时,我将获得服务器的位置标识,所以我想更新我的 UI 界面,所以我 1 2 也使用广播,但它不起作用!

结构

                                  broadcast
service ( on location changed ) ------------->   UI interface

            broadcast??
AsyncTask ------------->   UI interface

我不能在我的 AsyncTask 中使用 sendBroadcast,因为我的 AsyncTask 不是活动任何想法?

【问题讨论】:

    标签: android service android-asynctask


    【解决方案1】:

    我猜你的问题是从服务中获取数据。

    您可以将服务绑定到 UI 并从 Activity 中调用该服务。

    这是一个开源项目。 Link.

    这是服务代码。 Link.

    这是用户界面。 Link

    编辑: 如果您想使用 AsyncTask 进行 UI 更新,那么您可以使用在 UI 线程中运行的 onPostExecute

    编辑: 干得好。异步任务示例。 Link.

    【讨论】:

    • Thx ,但我使用广播,以便我的 UI 的静态成员无法从服务中捕获信息广播(没关系),问题出在我想要的服务器响应后的 asyncTask 类中更新我的用户界面,
    • 你是从 asyncTask 中的 OnPostExecute 更新 ui
    • 在我的 AsyncTask 中受保护的 void onPostExecute(String result) { Log.d(tag, "post executed"+result); // 在这里做某事 //MyGPS.location_info = "UnKnown"; // // 想将响应广播到 UI 可以吗??我所做的只是让 UI 的成员等于响应,所以我想如果我可以广播出来,我可以更新我的 UI
    • 在执行后我可以更改从服务器获取的位置的值,但问题是我必须重新启动活动,否则它不会改变
    • onPostExecute 在 ui 线程上运行,因此可以直接更新 ui。无需广播。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多