我目前试图将我的应用程序的授权代码放入一个外部类中,这样每当需要时我就不必重复自己并整理代码。
我遇到的问题是,我似乎无法从AsyncTask内部访问我的Session变量。我很想尝试自己解决问题以更好地理解情况,但另一个问题是,在LogCat中没有错误信息,所以我不知道出了什么问题!我的授权类如下:
public class AuthoriseMe extends AsyncTask<Object, Void, String> {
public Context context;
protected String doInBackground(Object... params) {
Log.i(TAG, "I GOT HERE");
SessionManager session = new SessionManager(context);
Log.i(TAG, "I GOT PAST HERE");
String authorized = "";
HashMap<String, String> app = session.getAPPDetails();
String appid = app.get(SessionManager.KEY_APPID);
String secret = app.get(SessionManager.KEY_SECRET);
}
}
我使用以下代码启动AsyncTask,在该代码中,另一个类正在调用authoriseMe()函数:
public void authoriseMe() {
AuthoriseMe authorise = new AuthoriseMe();
authorise.execute();
}
由于我已记录了此过程,因此正在调用authoriseMe(),但看起来问题出在"SessionManager session = new SessionManager(context);"这一行,如果我将该行删除,则我的逻辑中会出现"I GOT PAST HERE"。
我的SessionManager构造函数如下:
// Constructor
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
从我所看到的情况来看,这似乎是异步任务中上下文的问题。有没有什么解决方法?有人有过这方面的经验吗?