2013-03-08 86 views
1

当我想访问我的SharedPreferences内部doInBackground时遇到问题。我怎样才能做到这一点?如何访问doInBackground AsyncTask中的SharedPreferences?

真的非常感谢!

private class postData extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 

    // I need to access here to my SharedPreferences // 

    } 
} 
+1

您可以在后台线程中访问SharedPreferences(与您在主线程中执行的方式相同),因为它们是永久存储的。 – Edison 2013-03-08 22:12:17

+0

非常感谢你,它的工作原理! :D我不知道为什么我会这样做,我无法做到这一点,我会发布我的最终代码。 – 2013-03-08 22:20:24

回答

2

该解决方案比我想象的要容易。

private class postData extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());  
    String userName = sharedPrefs.getString("auth_username", ""); 
    String userPass = sharedPrefs.getString("auth_password", ""); 
    } 
} 
+4

IDK为什么要这样工作,getApplicationContext()是Context类的方法,而AsyncTask没有扩展它 – viplezer 2013-11-22 12:12:36

+5

这个答案不正确,getApplicationContext()在这里不起作用。 – Loolooii 2014-02-26 14:47:31

+0

检查链接,这是工作对我来说http://stackoverflow.com/questions/15855332/update-shared-preferences-from-asynctask-onpostexecute – KZoNE 2015-07-07 11:19:00

相关问题