小编典典

将SharedPreferences传递给doInBackground()

java

我试图将SharedPreferences首选项作为AsyncTask中doInBackground函数的参数传递。我已经给它传递了一个字符串(URL),所以我也需要将首选项也作为字符串传递。我可以简单地使用prefs.toString()将其转换为字符串吗?

这是我设置偏好的地方:

if (prefs.getBoolean("firstrun", true)) {
            prefString = prefs.toString();
            prefs.edit().putBoolean("firstrun", false).commit();
        }

阅读 263

收藏
2020-11-30

共1个答案

小编典典

你不能,你不应该。您可以轻松地读取内部首选项,而doInBackground()无需将任何内容传递给方法,只需使用即可PreferenceManager

public class DownloadFiles extends AsyncTask<URL, Void, Void> {

  Context ctx;

  DownloadFiles(Context ctx) {
    this.ctx = ctx;
  }

  @Override
  public void doInBackground(URL... urls) {
    // ...
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
    // ...
  }
}
2020-11-30