我正在努力减少我的活动类(Android)中的噪音,我首先要解决的是我作为内部类的异步任务。我遇到的唯一问题是,一旦移出,我就无法将AppDelegate ref从活动传递给异步任务。
这是我(失败)的尝试
//这里我从活动
传递了参考public class HelloAndroidActivity extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
GetSessionsAsyncTask task = new GetSessionsAsyncTask(HelloAndroidActivity.this, getApplicationContext());
task.execute();
}
}
//在这里我将它推送到一个字段以便稍后使用它(但是在这个obj的init期间它失败了)
public class GetSessionsAsyncTask extends AsyncTask<String, Void, List<Session>> {
private Activity activity;
private AppDelegate delegate;
public GetSessionsAsyncTask(Activity activity, Context context) {
this.activity = activity;
this.delegate = (AppDelegate) context;
}
}
修改
我上面提到的app委托只是扩展应用程序(android类)
public class AppDelegate extends Application {
}
答案 0 :(得分:1)
一些事情:
Context
更具体的内容(请注意,AppDelegate
是Application
是Context
)onStart()
而不是onCreate()
执行任务,以确保在启动任务之前您的活动已正确初始化。答案 1 :(得分:1)
您需要将AppDelegate声明为Manifest中的Application类:
<application android:name=".AppDelegate" ... >
...
</application>