android - android中如何实现异步http-post请求?

标签 android http post asynchronous

我想在 Android 应用程序中实现以下简单模式:

  1. Activity A 启动 Activity B
  2. 在 Activity B 中,用户填写了一个简单的表单 F,然后点击提交
  3. 然后,Activity B 启动一个 AsyncTask C,将 F 发布到某个 URL,并立即返回到 Activity A
  4. 回到 Activity A,用户继续照常工作,而 C 仍在工作。但是一旦 C 完成,就应该通知用户,特别是如果结果失败。

我遇到的问题是第3步和第4步。由于C是由B启动的,那么A如何才能得到通知?嗯,不确定除了我之外其他人是否都清楚......

无论如何,现在我遇到了一个解决方案,其中步骤 3 看起来像这样:

3"。 Activity B 将表单内容返回给 Activity A。然后 A 启动 AsyncTask C 来发布表单并照常继续。

但是A也需要处理表单似乎有点不必要,它应该只是B的责任。还有其他想法或解决方案吗?

最佳答案

我会使用广播接收器。 http://d.android.com/reference/android/content/BroadcastReceiver.html

在 Activity B 中

Intent broadcastIntent = new Intent("com.yourapppackage.BROADCAST");
broadcastIntent.putExtra("myExtras", myExtras.extra); // Put your results in here
sendBroadcast(broadcastIntent);

从 AsyncTask 的 onPostExecute 触发此操作。

在您的应用程序 list 中,将 Intent 过滤器添加到您的 Activity A 条目中 http://developer.android.com/guide/topics/manifest/intent-filter-element.html

<activity android:name=".A"
>
    <intent-filter>
        <action android:name="com.yourapppackage.BROADCAST" />
    </intent-filter>
</activity>

在 Activity A中注册一个BroadcastReceiver http://developer.android.com/reference/android/content/BroadcastReceiver.html

// Set up a handler and a broadcast reciever
private final Handler mHandler = new Handler();
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
    @Override
        public void onReceive(Context context, Intent intent) {
            // Handle reciever
            String mAction = intent.getAction();

            if(mAction.equals("com.yourapppackage.BROADCAST")) {
            // Do something with the results - intent.getExtras();
        }
    }
}

// Register a reciever
IntentFilter myRecieverIntentFilter = new IntentFilter();
myRecieverIntentFilter.addAction("com.yourapppackage.BROADCAST");
this.registerReceiver(mIntentReceiver, myRecieverIntentFilter, null, mHandler);

关于android - android中如何实现异步http-post请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608656/

相关文章:

java - Volley post 方法 JSONArray

ajax - Django测试客户端访问url时得到301重定向

android - 如何实现对可运行线程的简单 RxJava 调用?

android - ListActivity 和 ListView

http - 我应该在每个传入请求中创建新的上下文吗?

java - JMeter 根据先前的响应创建 HTTP 请求正文

android - onClick 在 fragment 内部不起作用

android - 在 android searchview 中添加计数文本字段

ruby - 通过 Net::HTTP 在 Ruby 中发送 http post 请求

c++ - 使用 GNU cgicc 处理多个 POST 附件