PHP与android的通信
我正在开发一个android应用程序,其中用户将数据发送到PHP服务器。为此,我正在使用rest web服务,我正在发送大量数据,执行这些数据几乎需要2分钟,我希望当用户将数据发送到PHP服务器时,服务器应将成功消息发送回用户,服务器在单独的线程中执行数据。这是怎么可能的?您可以使用它执行繁重的操作,而不阻塞UI线程 我相信这段代码应该足以让你开始PHP与android的通信,php,android,Php,Android,我正在开发一个android应用程序,其中用户将数据发送到PHP服务器。为此,我正在使用rest web服务,我正在发送大量数据,执行这些数据几乎需要2分钟,我希望当用户将数据发送到PHP服务器时,服务器应将成功消息发送回用户,服务器在单独的线程中执行数据。这是怎么可能的?您可以使用它执行繁重的操作,而不阻塞UI线程 我相信这段代码应该足以让你开始 private class MyHeavyTask extends AsyncTask<Void, Void, Boolean>{
private class MyHeavyTask extends AsyncTask<Void, Void, Boolean>{
// Perform initialization here.
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
progressDialog = new ProgressDialog(MyActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
progressDialog.show();
}
// If an error is occured executing doInBackground()
@Override
protected void onCancelled() {
if (progressDialog.isShowing())
progressDialog.dismiss();
// Show an alert box.
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
builder.setCancelable(false)
.setTitle("Error!")
.setMessage("Error in executing your command.")
.setInverseBackgroundForced(true)
.setPositiveButton("Dismiss", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
@Override
protected Boolean doInBackground(Void... arg0) {
if(!isCancelled()) {
// Perform heavy lifting here.
}
return true;
}
// After the request's performed. Here, hide the dialog boxes, inflate lists, etc.
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (progressDialog.isShowing())
progressDialog.dismiss();
}
}
希望它能帮助解决您的问题。将json与
异步任务一起使用
谢谢我知道该解决方案,但请给我服务器端解决方案服务器如何发送用户成功消息并在单独的线程中执行繁重的工作。PHP的核心是一种单线程脚本语言。除非您依赖于第三方解决方案,否则仅在PHP上执行多个线程是不可能的。我不明白你为什么想要多线程解决方案,总之,基本上我有一个700 lat lng的列表,我想用geo coder类得到一个与这些lat lng相对应的区域名称问题是,当我得到区域名称时,我的应用程序需要花费太多的时间来计算它,这就是为什么我想在服务器端而不是移动端计算它。你的列表在哪里?如果它已经在移动端,那么在服务器端这样做意味着向服务器发出请求并获得响应所需的额外时间,而不是在应用程序上执行操作。我仍然不明白您为什么问最初的问题,即需要一个线程来执行此活动。这就是为什么用户将列表发送到服务器,SRVER发出成功消息,并在单独的线程中对列表进行编码。
new MyHeavyTask().execute();