Android 为了操作视图,我是否仍然必须将ActivityContext传递给AsyncTask?
此函数在UiThread上运行,但这似乎并不意味着它也可以访问活动上下文。我是否应该为我的AsyncTask实现一个公共Setter来传递活动(作为参考)Android 为了操作视图,我是否仍然必须将ActivityContext传递给AsyncTask?,android,multithreading,android-activity,android-asynctask,Android,Multithreading,Android Activity,Android Asynctask,此函数在UiThread上运行,但这似乎并不意味着它也可以访问活动上下文。我是否应该为我的AsyncTask实现一个公共Setter来传递活动(作为参考) 我可以考虑两种选择 如果AsyncTask是活动的内部类,则可以使用getApplicationContext()获取上下文对象,而无需传递活动对象 如果必须从不同的方法访问ImageView对象,或者如果AsyncTask类处理的任务可以运行多次,则可以考虑将ImageView对象存储为活动类的成员,这样就不需要上下文来访问它 @1:我在一
我可以考虑两种选择
@1:我在一个新文件中创建了这个类,因为我想在我的所有活动中使用这个通用类。所以,我想这是行不通的。然而,我已经在我的“AppController”中存储了ApplicationContext的引用,我可以从代码的任何一点访问它。但将ActivityContext传递给ApplicationContext并没有太大区别。或者,有吗?我有时觉得,ApplicationContext有点慢。除此之外,我认为您实际上无法通过applicationContext访问findViewById方法,applicationContext不是活动的上下文。@2:因此,您建议我不要传递上下文,而只传递所需ImageView对象的引用。我认为这是一个好方法,因为我只需要“findviewbyd”的上下文。就性能而言,传递上下文比只传递ImageView对象更昂贵吗?好的,那么我想选项2是更好的解决方案。我不知道哪种对象类型需要更多的资源,但对我来说,上下文对象似乎比单个ImageView要“重”得多。
protected void onPostExecute( Bitmap bitmap ) {
//following is underlined red due to missing context
(ImageView)findViewById(ResId)).setImageBitmap(bitmap);
}