我正在处理遗留代码。我的任务是处理异步任务的结果。
我一直在访问dispatchMessage方法中的外部对象。是否有任何方法可以实现它,还是应该使用Singleton或静态属性?
到目前为止,我已经创建了一个负责以异步模式运行的类。
private class BackgroundTask extends AsyncTask<Object, Void, Boolean>
{
@Override
protected Boolean doInBackground(Object... params){
// ...
}
@Override
protected void onPostExecute(Boolean result){
// ...
}
}
在OnPostExecute或doInBackground方法中,我想使用处理程序发送消息,所以我推送一些简单的东西:
Message m = new Message();
Bundle b = new Bundle();
b.putString("sizeKEY", "size " + _count);
m.setData(b);
_handler.sendMessage(m);
我需要在这里访问外部对象:
new Handler(){
@Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
// get access to, say, Activity property or method here
}
}
怎么做?
答案 0 :(得分:0)
您可以使用<MyOuterClass>.this
来访问外部对象(因为您在内部类中)。
如果您的外部类具有名称“MyActivity”(仅作为示例)并且您想要访问其附加内容,那么它将是:
MyActivity.this.getIntent().getExtras()
请参阅
http://www.java-forums.org/java-tip/6296-inner-class-accessing-outer-class.html