在服务中使用哪种上下文?

时间:2012-12-01 08:12:51

标签: android

我想在其他需要Context作为输入参数的类中调用方法,但我有3种服务可能性:

- getApplicationContext
- getBaseContext
- getApplication

ScreenService extends Service

中使用哪一个

主要的不同之处是什么。我前几次读到使用getApplicationContext并不好。这是真的吗?

1 个答案:

答案 0 :(得分:6)

应用程序上下文附加到应用程序的生命周期中,并且在应用程序的整个生命周期中始终保持相同。因此,如果您正在使用Toast,则可以使用应用程序上下文甚至活动上下文(两者),因为可以从应用程序中的任何位置引发Toast,并且不会附加到窗口。

活动上下文附加到活动的生命周期,如果活动的onDestroy被提升,则可以销毁。

getApplication()虽然它引用了Application对象但是Application类扩展了Context类,所以它可以用来提供应用程序上下文。

getApplicationContext()提供应用程序上下文。

getBaseContext()提供活动背景。

这取决于您使用上下文的目的,

getApplicationContext()是最受欢迎的方式,因为此上下文一直存在,直到应用程序关闭。

getBaseContext()上下文可用于窗口小部件和视图。

所以在toast消息中或创建intent时,它们都具有相同的效果,尽管使用getApplicationContext()是最正确的。 Toast接受任何类型的Context,因为它没有附加任何类型的View。这是一个通知。