Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为了操作视图,我是否仍然必须将ActivityContext传递给AsyncTask?_Android_Multithreading_Android Activity_Android Asynctask - Fatal编程技术网

Android 为了操作视图,我是否仍然必须将ActivityContext传递给AsyncTask?

Android 为了操作视图,我是否仍然必须将ActivityContext传递给AsyncTask?,android,multithreading,android-activity,android-asynctask,Android,Multithreading,Android Activity,Android Asynctask,此函数在UiThread上运行,但这似乎并不意味着它也可以访问活动上下文。我是否应该为我的AsyncTask实现一个公共Setter来传递活动(作为参考) 我可以考虑两种选择 如果AsyncTask是活动的内部类,则可以使用getApplicationContext()获取上下文对象,而无需传递活动对象 如果必须从不同的方法访问ImageView对象,或者如果AsyncTask类处理的任务可以运行多次,则可以考虑将ImageView对象存储为活动类的成员,这样就不需要上下文来访问它 @1:我在一

此函数在UiThread上运行,但这似乎并不意味着它也可以访问活动上下文。我是否应该为我的AsyncTask实现一个公共Setter来传递活动(作为参考)


我可以考虑两种选择

  • 如果AsyncTask是活动的内部类,则可以使用getApplicationContext()获取上下文对象,而无需传递活动对象
  • 如果必须从不同的方法访问ImageView对象,或者如果AsyncTask类处理的任务可以运行多次,则可以考虑将ImageView对象存储为活动类的成员,这样就不需要上下文来访问它
    @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); 
          }