5

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

- getApplicationContext
- getBaseContext
- getApplication

哪个用在ScreenService哪个extends Service

主要有什么不同。我前段时间读到使用getApplicationContext不好。真的吗?

4

1 回答 1

6

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

Activity 上下文附加到 Activity 的生命周期,如果 Activity 的 onDestroy 被引发,则可以将其销毁。

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

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

getBaseContext()提供活动上下文。

这取决于你为什么要使用上下文,

getApplicationContext()是最优选的方式,因为这个上下文一直存在到应用程序关闭。

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

因此,在 toast 消息中或创建意图时,它们都具有相同的效果,即使使用getApplicationContext()是最正确的。Toast 接受任何类型的上下文,因为它没有附加任何类型的视图。它是一个通知。

于 2012-12-01T08:26:54.863 回答