Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 为什么全局应用程序上下文不能与“;getassets";_Android - Fatal编程技术网

Android 为什么全局应用程序上下文不能与“;getassets";

Android 为什么全局应用程序上下文不能与“;getassets";,android,Android,刚刚解决了我Android应用程序中的一个bug。我试图使用getAssets()从我的资产目录中提取一个文件。我对应用程序进行了子类化,并返回了一个“getApplicationContext”对象,这样我的所有类都可以在需要时使用上下文 但在经历了很多令人头痛的事情和NullPointerException之后,我发现我需要传递一个本地上下文变量并使用它。如果我使用全局应用程序上下文,getAssets将无法工作 为什么会这样?使其工作的局部上下文变量有什么特别之处。我认为任何旧的“上下文”

刚刚解决了我Android应用程序中的一个bug。我试图使用getAssets()从我的资产目录中提取一个文件。我对应用程序进行了子类化,并返回了一个“getApplicationContext”对象,这样我的所有类都可以在需要时使用上下文

但在经历了很多令人头痛的事情和NullPointerException之后,我发现我需要传递一个本地上下文变量并使用它。如果我使用全局应用程序上下文,getAssets将无法工作


为什么会这样?使其工作的局部上下文变量有什么特别之处。我认为任何旧的“上下文”变量都足以访问必要的方法并使它们正常工作

局部上下文变量也是一种活动。该活动提供了使用getAssets()调用的AssetManager使用的额外功能。Android严格使用上下文而不是活动来避免内存泄漏。您几乎应该始终使用活动的上下文。

请参阅Commonware对此问题的答案。。。特别是,关于为什么不使用
getApplicationContext()
。。。它不是一个完整的上下文,支持活动所做的一切。您将尝试在此上下文中执行的各种操作都将失败,主要与GUI有关。和相关链接。谢谢-这是一个很好的资源。