gpt4 book ai didi

java - Android Intent 上下文令人困惑

转载 作者:IT老高 更新时间:2023-10-28 20:29:08 26 4
gpt4 key购买 nike

谁能给我解释一下:

Intent intent = new Intent(Context, AlarmReceiver.class);

我从来没有理解过,我认真地认为,如果有人不尝试向我深入解释这一点,我永远也不会理解。这整个上下文的事情让我很困惑。有时它是这样工作的:

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);

有时它不会那样工作,但它只接受:

    Intent intent = new Intent(context, AlarmReceiver.class);

有时是:

Intent intent = new Intent(this, AlarmReceiver.class);

等等。等等等等。

我了解上下文的基础知识,但有多少?为什么 eclipse 会一次又一次地给我一个错误?为什么有时我们需要声明上下文? :

Context context;

我无法为所有情况找到正确的上下文我如何知道在每种情况下什么是正确的?

最佳答案

首先,让我解释一下the context稍微好一点,那我们继续说如何使用和接收。本质上,上下文是将资源链接到程序的引用。每个对象都有自己的上下文,其中包含设置该对象所需的资源。除了其他目的之外,还需要创建许多对象并获取程序标识信息。这使得设置新 View 和 Activity 非常宝贵,但它也可以用于其他目的。另见 this answer了解更多信息。

一个项目的上下文可以来自不同的地方。有时它被存储并且必须被检索,有时它是继承的。基本上,这是面向对象的编程。

举几个例子:

Activity继承上下文。因此,如果你在一个 Activity 中,你只需要传递它自己来使用上下文。它还包含一个指向 getBaseContext() 的指针。如果您需要整个应用程序上下文,您可能偶尔需要引用它,但很可能暂时不需要。

View不继承上下文。但是,它确实有一个方法 getContext() .如果您需要从 View 中获取上下文,这就是获取它的方法。这个上下文不会是完整的,只会包含 View 内容的上下文。

Fragments也不继承上下文。它们包含一个方法 getActivity() ,如果 Fragment 处于 Activity 状态,将返回 Activity ,即 Fragment 的上下文。

BroadcastReceivers也不继承上下文。实际上,它们根本不包含上下文,只是在接收到事件时接收当前上下文(如onReceive(Context context, Intent intent))

关于java - Android Intent 上下文令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14658469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com