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

Android 如何将要发送到服务器的动态更改字符串从主活动传递到异步任务,android,android-asynctask,Android,Android Asynctask,我想创建一个AsyncTask来处理与服务器的通信(客户端是android应用程序,服务器是python)。 我的主要活动将需要,取决于用户交互,将数据发送到服务器。 如何将一直更改的字符串传递给AsyncTask? 例如,我的主要活动中有以下变量: String toSend = "Something" 用户按下按钮,现在字符串包含以下数据: toSend = "After Button Pressed" 问题是如何将始终更改的toSend字符串传递给异步任务 更新: 我知道如何创建异步任

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

String toSend = "Something"
用户按下按钮,现在字符串包含以下数据:

toSend = "After Button Pressed"
问题是如何将始终更改的
toSend
字符串传递给异步任务

更新:


我知道如何创建异步任务。异步任务将在活动开始时启动。它不是活动中的私有类。异步任务的输入是动态变化的(基于用户交互)。有没有一种方法可以让任务的输入发生动态变化?也许可以通过裁判

通过将字符串声明为final,您无法更改其值。那么,宣布它为

final String toSend = "After Button Pressed";

在AsyncTask类中创建构造函数并在其中发送inpur参数, 例:


可能重复的
如何将一直更改的字符串传递给AsyncTask。不可能的。无法将参数传递给已在运行的异步任务。只能在任务启动时传递参数。但是正在运行的asynctask(如果它是活动的私有类)可以访问活动中声明的字符串变量。因此,代码可以查看字符串的内容是否已更改。这可以通过使用runnable来实现,但需要一些延迟,当用户按下或设置一些去抖动时,需要取消以前的线程数据并发送最新的线程数据。因此,@greenapps你说只有当异步任务是主活动类的一部分时才能实现这一点?这确实很有趣。这不是我想要的,这与在execute中给出参数不一样吗<代码>任务。执行(this.toSend)
是的,几乎相同!
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){

    }
}
button.setOnClickListener(new View.OnCLickListener(){
    new ExampleAsyncTask(this.toSend).execute();
});