如何传递动态更改字符串以从主活动发送到服务器到异步任务

时间:2018-03-16 09:09:57

标签: android android-asynctask

我想创建一个AsyncTask来处理我与服务器的通信(客户端是android应用程序,服务器是python)。 我的主要活动将需要,取决于用户交互,将数据发送到服务器。 如何将始终更改的字符串传递给AsyncTask? 例如,我在我的主要活动中有这个变量:

String toSend = "Something"

用户按下按钮,现在该字符串包含以下数据:

toSend = "After Button Pressed"

问题是如何将始终更改的toSend字符串传递给异步任务?

更新:

我知道如何创建AsyncTask 。 AsyncTask将在活动开始时启动。它不是活动中的私人课程。 AsyncTask的输入正在改变(基于用户交互)。有没有办法让这项任务有一个动态变化的输入?也许通过ref传递它?

3 个答案:

答案 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();
});