我想创建一个AsyncTask来处理我与服务器的通信(客户端是android应用程序,服务器是python)。 我的主要活动将需要,取决于用户交互,将数据发送到服务器。 如何将始终更改的字符串传递给AsyncTask? 例如,我在我的主要活动中有这个变量:
String toSend = "Something"
用户按下按钮,现在该字符串包含以下数据:
toSend = "After Button Pressed"
问题是如何将始终更改的toSend
字符串传递给异步任务?
更新:
我知道如何创建AsyncTask 。 AsyncTask将在活动开始时启动。它不是活动中的私人课程。 AsyncTask的输入正在改变(基于用户交互)。有没有办法让这项任务有一个动态变化的输入?也许通过ref传递它?
答案 0 :(得分:0)
通过将String声明为final,您无法更改其值。所以,将其声明为
final String toSend = "After Button Pressed";
答案 1 :(得分:0)
您可以在调用.execute()
方法之前将变量传递给asyncTask,答案已在此处:How to pass variables in and out of AsyncTasks?
答案 2 :(得分:0)
在AsyncTask类中创建一个构造函数并在其中发送inpur参数, 例如:
private class ExampleAsyncTask extends AsyncTask<Void,Void, Object>{
String inputString;
public ExampleAsyncTask(String inputString){
this.inputString = inputString;
}
@Override
protected void onPreExecute(){
}
@Override
protected Object doInBackground(String... params){
//call your server here by passing the variable (this.inputString)
return result;
}
@Override
protected void onPostExecute(Object result){
}
}
//你的asynctask调用部分应该是这样的
button.setOnClickListener(new View.OnCLickListener(){
new ExampleAsyncTask(this.toSend).execute();
});