【发布时间】:2014-02-11 14:09:51
【问题描述】:
我目前正在尝试将我的应用授权代码放入外部类中,因此我不会在需要时重复自己并整理代码。
我遇到的问题是我似乎无法从 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);”这一行是问题发生的地方,好像我把那条线去掉,我的逻辑是“我过去了”。
我的 SessionManager 构造函数如下所示:
// Constructor
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
据我所知,这似乎是 asyncTask 中的上下文问题。有没有办法解决?有没有人有这方面的经验?
【问题讨论】:
-
你在哪里对你的授权说应该使用哪个上下文?看起来您只是在类中声明了上下文,但从未为其赋值?
-
asynctask 中上下文在哪里初始化?
-
这是我的问题,外部异步任务中是否有上下文?通常我会在包含异步任务的类中分配它,但这与该流程是分开的
-
你应该使用下面给出的答案,活动有上下文,所以你可以通过它。
-
附带说明 - 如果您的上下文是活动上下文,请确保使用 WeakReference
。
标签: android android-asynctask android-context