将字符串变量从Activity发送到AsyncTask类

时间:2014-09-03 23:20:19

标签: java android design-patterns singleton

我需要将一个字符串变量从我的主活动类发送到AsyncTask类,并使用该字符串作为url的一部分来进行api调用。

我尝试使用Intent并共享首选项,但似乎无法在AsyncTask类中访问它们。我可以使用Singleton模式,如果是,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

如果声明全局变量:

public class MainActivity extends Activity {

    private String url = "http://url.com";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        new DownloadFilesTask().execute();
    }

    private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {

     protected Long doInBackground(Void... params) {

        // You can use your 'url' variable here
        return null;
     }

     protected void onProgressUpdate(Void... result) {
        return null; 
     }

     protected void onPostExecute(Void result) {

     }
   }
}

如果你在单独的班级工作:

new MyAsyncTask("Your_String").execute();

private class MyAsyncTask extends AsyncTask<Void, Void, Void> {

    public MyAsyncTask(String url) {
        super();
        // do stuff
    }

    // doInBackground()
}