朋友们,我需要帮助,使用Asynctask或Threads将Android httppost数据发送到服务器。当我点击发布按钮时,需要将数据发送到我的服务器。但是当我点击它时,应用程序需要进入下一页,并且数据需要通过后台进程发送。我是Android的新手。我不知道这种任务应该使用什么(Threads还是Asyanctask)。我尝试了这个代码,但它会给我异常错误。
public void startProgress(final String name) {
// Do something long
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(500);
send(name);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
new Thread(runnable).start();
}
public void send(String name)
{
// get the message from the message text box
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2:8080/Test");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
String co2 =input_field.getText().toString();
nameValuePairs.add(new BasicNameValuePair("Name", name));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Toast toast = Toast.makeText(getApplicationContext(), "Got it ", Toast.LENGTH_SHORT);
toast.show();
httpclient.execute(httppost);
input_field.setText("");
} catch(Exception e){
Toast toast2 = Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT);
toast2.show();
}
}
但如果我这样使用它,它就可以工作了。(text是该页面上的TextView项目)
public void startProgress(final String name) {
// Do something long
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
text.post(new Runnable() {
@Override
public void run() {
send(name);
}
});
}
};
new Thread(runnable).start();
}
下面的代码发生了什么,请您解释一下。
抱歉,由于格式要求,我无法直接翻译该段文字。请您提供纯文本格式的内容以便我进行翻译。
text.post(new Runnable() {
@Override
public void run() {
send(name);
}
});
请帮我解决这个问题。如果有更好的方法来满足我的需求,请提出。因为我对Android开发经验很少。