我想知道为什么实现者决定让开发人员传递上下文(尽管系统服务对于开发人员更像是单例,而且我们大多数时候并不关心):
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(layout);
我提出这个问题主要是因为我隐含地担心每当我使用context时可能会泄漏内存/上下文。这里是否存在误操作上下文的可能性?
我想知道为什么实现者决定让开发人员传递上下文(尽管系统服务对于开发人员更像是单例,而且我们大多数时候并不关心):
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(layout);
我提出这个问题主要是因为我隐含地担心每当我使用context时可能会泄漏内存/上下文。这里是否存在误操作上下文的可能性?
LayoutInflater.from(context);
简单地调用 context.getSystemService()
,使用提供的上下文(即您的应用程序上下文)来获取所需的服务。 LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
系统提供了上下文,因此我们不需要过多关注内存泄漏。如果您查看不同的公共参数(http://developer.android.com/reference/android/content/Context.html),则会发现大多数事情都可以设置或简单获取。功能也主要在应用程序层面而不是系统级别。因此,泄漏需要您为代码而不是上下文而注意。