Android Asynctask传递单个字符串

问题描述:

我想将单个字符串传递给一个asynctask。任何人都可以告诉我它是如何完成的?我getEntity需要的方法getEntity(活动,字符串,EntityGetListener),但我一直通过这个字符串[]Android Asynctask传递单个字符串

String pass= story.get(position).getEntity(); 

     new RemoteDataTask().execute(pass); 





private class RemoteDataTask extends AsyncTask<String, String, Long> { 

    @Override 
    protected Long doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     EntityUtils.getEntity(activity, params, new EntityGetListener() { 
      @Override 
      public void onGet(Entity entity) { 

       viewcount = entity.getEntityStats().getViews(); 
      } 

      @Override 
      public void onError(SocializeException error) { 

      } 
     }); 
     return null; 
    } 

} 
+3

通'PARAMS [0]'代替'params'到'getEntity'方法的更多信息请参见[可变参数](http://docs.oracle.com/javase/1.5.0/docs/guide /language/varargs.html) –

您已经有此

 new RemoteDataTask().execute(pass); // assuming pass is a string 

doInbackground

 @Override 
    protected Long doInBackground(String... params) { 

      String s = params[0]; // here's youre string 
      ...  //rest of the code. 
    } 

你可以查找更多信息@

http://developer.android.com/reference/android/os/AsyncTask.html

+0

将'String value'传递给'AsyncTask'类时,它表示该变量是从内部类中访问的。需要声明为final。但我需要随时更改变量值。我如何解决这个问题 –

+0

@EJChathuranga如果你正在访问的变量不是一个类变量,并且它在匿名内部类中访问,它必须是最终的。阅读https://*.com/questions/4732544/why-are-only-final-variables-accessible-in-anonymous-class。在使用之前,您可以使变量成为类初始化的成员以克服此问题 – Raghunandan

您可以使用构造函数构建AsyncTask

public class RemoteDataTask extends AsyncTask<String, String, Long> { 

    private String data; 

    public RemoteDataTask(String passedData) { 
     data = passedData; 
    } 

    @Override 
    protected String doInBackground(Context... params) { 
     // you can access "data" variable here. 
     EntityUtils.getEntity(activity, params, new EntityGetListener() { 
      @Override 
      public void onGet(Entity entity) { 
       viewcount = entity.getEntityStats().getViews(); 
      } 
      @Override 
      public void onError(SocializeException error) { 
      } 
     }); 
     return null; 
    } 
} 

在应用程序(ActivityService等),就可以使用;

private RemoteDataTask mTask; 
private void doStuff(){ 
    String pass = "meow"; // story.get(position).getEntity(); 
    mTask = new RemoteDataTask(pass); 
    mTask.execute(); 
}