LA_*_*LA_ 19 android accountmanager android-asynctask
setAccountAuthenticatorResult可以从Activity中调用,它可以扩展AccountAuthenticatorActivity.我的活动扩展了,但是启动了ASyncTask,因此setAccountAuthenticatorResult应该从ASyncTask调用(或者,ASyncTask的结果应该传递回主线程).
怎么做?
下面的代码有什么问题?
AsyncTask<Uri, Void, Bundle> task = new RetrieveAccessTokenTask(this, consumer, provider, prefs).execute(uri);
public class RetrieveAccessTokenTask extends AsyncTask<Uri, Void, Bundle> {
private Context context;
public RetrieveAccessTokenTask(Context context, OAuthConsumer consumer,
OAuthProvider provider, SharedPreferences prefs) {
this.context = context;
}
@Override
protected void onPostExecute(Bundle result) {
context.setAccountAuthenticatorResult(); // doesn't work
}
Run Code Online (Sandbox Code Playgroud)
Oll*_*e C 71
创建AsyncTask时,可以向其添加新的构造函数,并传入对Activity的引用:
AsyncTask myTask = new MyTask(this);
Run Code Online (Sandbox Code Playgroud)
然后从AsyncTask中的onPostExecute()方法中可以调用Activity上的方法.
public class MyTask extends AsyncTask<String, String, String>
{
public MyActivity activity;
public MyTask(MyActivity a)
{
this.activity = a;
}
// ......
protected void onPostExecute(String result)
{
activity.myMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41889 次 |
| 最近记录: |