我正在用android开发一个应用程序,我是新手 在我的项目的一部分中,我需要从用户的输入字段中获取数据,然后创建一个到服务器的 Http 连接,并将第一次调用的结果与其他一些字段一起放入另一个到服务器的 Http 连接中,我不知道实现它的正确方法是什么。
public class TwoHttpActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_transport);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
public static class PlaceholderFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
params[0] = firstText;
. . . .
. . . .
params[3] = secondText;
}
});
}
}
问题: 现在我需要将 params[0] 发送到一个 url http://myserver/urlOne然后从服务器获取结果并将它们与 params[1] 一起放入 params[3] 并将它们一起发送到服务器的第二个 url http://myserver/urlTwo
因为这些连接应该在 classes
extends from AsyncTask
中进行,所以我认为不可能只拥有
public class FirstUrlTask extends AsyncTask<String[], Void, Void> {
//the class handles the call to first url inside
//doInBackground(String[]... params)
}
和
public class SecondUrlTask extends AsyncTask<String[], Void, Void> {
//the class handles the call to second url inside
//doInBackground(String[]... params)
}
然后
firstUrlTask.execute(..);
secondUrlTask.execute(..);
在 button.setOnClickListener(new View.OnClickListener()
中
由于它们是异步任务,因此不清楚哪些任务将首先执行,因此请帮助我以正确的方法来执行此操作,请提供您的答案以及详细信息和代码示例。
最佳答案
这样做:
第一步:调用 FirstUrlTask 异步类
firstUrlTask.execute(..);
第二步:在FirstUrlTask的onPostExecute()中调用SecondUrlTaskAsync类
public class FirstUrlTask extends AsyncTask<String[], Void, Void> {
//doInBackground(String[]... params) {}
protected void onPostExecute(ClassTypeYouReturning result){
super.onPostExecute();
secondUrlTask.execute(..); //Call to second url
}
}
上述方法将确保第一次调用将对第一个 url 进行,并且在第一个 url 的响应上,将调用第二个 url。
关于android - 两个依赖的 HttpUrlConnection 与 android 中的 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690277/