如何在android中实现异步http post请求?
我想在android应用程序中实现以下简单模式:如何在android中实现异步http post请求?,android,http,post,asynchronous,Android,Http,Post,Asynchronous,我想在android应用程序中实现以下简单模式: 活动A启动活动B 在活动B中,用户填写一个简单的表格F,然后点击提交 然后,活动B启动一个异步任务C,将F发布到url,并立即返回到活动a 回到活动A中,用户在C仍在工作时继续正常工作。但是一旦C完成,应该通知用户,特别是如果结果是失败 我遇到的问题是步骤3和步骤4。既然C是由B启动的,A如何得到通知?嗯,我不知道除了我以外,其他人是否清楚 不管怎样,现在我遇到了一个解决方案,第3步看起来像这样: 3“.活动B将表单内容返回给活动A。然后,A启动
但是a也需要处理表单似乎有点不必要,这应该是B的责任。还有其他想法或解决方案吗?为什么B不获取运行任务所需的信息,然后将其传递回a?onPreExecute()和onPostExecute()发生在活动a的主线程中
没关系,我只是在你的描述中看到了这一点。但是是的-B处理所有的事情-A只是将数据提交到URL。我会使用广播接收器 在活动B中
Intent broadcastIntent = new Intent("com.yourapppackage.BROADCAST");
broadcastIntent.putExtra("myExtras", myExtras.extra); // Put your results in here
sendBroadcast(broadcastIntent);
从AsyncTask的onPostExecute启动此命令
在您的应用程序清单中,向您的活动添加一个意图过滤器,并添加一个条目
试试这条路。
是的,最后我想我可以接受。因为表单只是一组字符串对,a真的不需要知道任何关于它的信息。谢谢。我还没有看过广播,只是因为我只有一个接收器,所以看起来有点过火:)
<activity android:name=".A"
>
<intent-filter>
<action android:name="com.yourapppackage.BROADCAST" />
</intent-filter>
</activity>
// 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);