Android的意图混淆语境(Android Intent Context Confusing)

2019-07-19 03:52发布

有人能解释这个给我,请:

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);

等等,等等和其他许多。

我理解上下文的基础知识,但究竟有多少呢? 又为何蚀把我的错误一次,其他时间的罚款? 我们为什么要申报,有时背景? :

Context context;

我无法找到合适的情况下适用于所有情况我怎么知道什么是在任何情况下是正确的?

Answer 1:

首先,让我解释一下什么情况下是一个好一点,然后让我们去如何它可以用来接收。 从本质上讲,环境是你的资源链接到你的程序的参考。 每个对象都被赋予它自己的上下文,其中包含以设置对象了所需的资源。 它需要被创造了许多对象,并获得程序识别信息,其他目的。 这使得宝贵建立新的观点和活动,但它也可以用于其他目的。 另见这个答案以获取更多信息。

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

只给你几个例子:

活动继承上下文。 因此,如果你是一个活动,你只需通过自己使用的上下文。 它还包含一个指向getBaseContext() 你可能偶尔需要引用,如果你需要在整个应用程序上下文,但最有可能你不会一会儿。

查看不继承上下文。 然而,它确实有一个方法的getContext() 。 如果你需要从一个视图中的背景下,这是得到它的方式。 这方面将是不完整的,但只会有查看内容的上下文。

碎片也不会继承上下文。 它们含有一个方法getActivity() ,其中,如果所述片段是活性的,将返回的活性,这对于片段的上下文。

BroadcastReceivers没有任何继承上下文。 事实上,他们根本不包含上下文,但在接收到一个事件(如简单地接收当前上下文的onReceive(上下文语境,意图意图) )



Answer 2:

上下文能力

您可以安全地与给定的上下文对象采取共同行动取决于它从最初来。 以下是常见的地方的应用程序将收到一个上下文表,并在每种情况下什么是有用的:

  1. 应用程序可以从这里开始的活动,但它需要的是一个新的任务来创建。 这可能满足特定的使用情况,但可以建立在你的应用非标准回堆行为,一般不建议或好的做法。
  2. 这是合法的,但通货膨胀率将与在其上运行的系统,没有什么在你的应用程序中定义的默认主题来完成。
  3. 允许如果接收机是空,这是用于获得持久广播消息的当前值,在Android 4.2及以上。

原创文章在这里 。



Answer 3:

我通过上下文的方式理解为environment.In简单来说上下文是anything.So的环境,当你使用任何形式的你必须决定什么应该是要为其使用上下文的事情周围背景的。

例如,如果你想要一些数据或现场维持通过了,你应该在应用程序类定义它的应用程序。

现在,当你在你的任何应用程序的组件的应用程序上下文,此字段中,在应用程序类已宣布将在你的context.Hence您可以访问它。

同样适用于所有的上下文类型真实。

如果你曾经尝试在服务组件使用alertDialog通过使用上下文“这个”。尝试这一个,我敢打赌,你一定会得到例外“本”在it.And使用时,代表服务的环境,因为它是背景部分,我们可以”吨that.Hence添加窗口,它会告诉你坏令牌exception.Which意味着令牌环景生成是不恰当的alertDialog显示。

希望这给你想要的东西简单的想法。



文章来源: Android Intent Context Confusing