当前位置: 首页 > 知识库问答 >
问题:

它可以是一种活动。getIntent()是否会返回null?

孟正志
2023-03-14

可以Activity.getIntent()曾经返回null吗?

文档没有提到这是一种可能性,所以我想知道我是否必须在取消引用之前检查getIntent()的结果是否为值。

共有3个答案

堵飞鸿
2023-03-14

始终使用<code>onSaveInstanceState()示例:

if (savedInstanceState != null) {
    extraData = savedInstanceState.getString(EXTRA_DATA);
} else {
    extraData = getIntent().getStringExtra(EXTRA_DATA);
}
呼延卓
2023-03-14

当您的应用程序在内存中从市场更新并在更新后再次重新启动时,它可以为空。也许即使您将通过 Studio 手动更新或从.apk文件进行更新,也会有相同的效果。不确定,对不起。

我曾经更新过Google开发控制台中的应用程序,并在Crashlitics中通过调用getIntent()得到了几个不同的NPE。这发生在我使用getIntent()的所有屏幕上。getExtra()在创建时,甚至在生命周期的后期。

所以…看起来很难看,但为了避免崩溃,我需要在每次调用getIntent时检查intent是否为空值,如果intent为空,则大多数时候调用Finish()。但你可以为你的目的制定其他逻辑,ofc。

寿嘉悦
2023-03-14

是的,可以,但只有在两种情况下:

在活动构造函数中:
Intent在内部附加方法中设置,从Instrumence类调用:

public Activity newActivity(Class<?> clazz, Context context, 
        IBinder token, Application application, Intent intent, ActivityInfo info, 
        CharSequence title, Activity parent, String id,
        Object lastNonConfigurationInstance) throws InstantiationException, 
        IllegalAccessException {
    Activity activity = (Activity)clazz.newInstance();
    ActivityThread aThread = null;
    activity.attach(context, aThread, this, token, 0, application, intent,
            info, title, parent, id,
            (Activity.NonConfigurationInstances)lastNonConfigurationInstance,
            new Configuration(), null, null);
    return activity;
}

因此,意图在构造函数中始终为空。

在 setIntent(null) 之后:
可以使用 setIntent() 从活动外部更改意向。

在所有其他情况下,它不能。

 类似资料:
  • 问题内容: 如果path变量不在url中,是否可以使返回null?否则我需要做两个处理程序。一个为另一个,为,但即使没有定义游戏,我都做同样的事情,但是我从列表中选择第一个,但是如果定义了游戏参数,那么我就使用它。 这就是我尝试打开页面时得到的: 原因:java.lang.IllegalStateException:在@RequestMapping中找不到@PathVariable [exampl

  • 或者这样会更好: 附注。抱歉开始新的话题,但我的业力不允许我评论答案。

  • 在Spock规范中,expect:或then:block中的任何行都被计算并断言为,除非它具有返回类型为的签名。 方法在类中定义如下: 我故意在那里断言,这样它就不会失败。即使失败并出现错误: 如何以及为什么方法调用结果被计算为?

  • 我有一个服务,它有一个回调函数,用于检测剪贴板中的更改,其中回调有一个PendingEvent,用于通知,稍后的通知用于在单击通知后启动活动。我的问题是,一旦活动启动,启动的活动是否有可能通知恢复服务(单向通信就可以了)?

  • 问题内容: 我有以下活动: 并进行以下JUnit测试: 我如何确保单击按钮设置正确的结果(调用),该结果将返回到任何以此为起始的活动? 问题答案: 使用问题中的当前Activity实现,即,通过单击ChildActivity中的按钮设置结果,然后立即销毁该活动,在ChildActivityTest中我们无法做很多测试结果相关的东西。 相关问题测试onActivityResult()的答案显示了如何

  • 问题内容: 如果实际查询不返回任何行,是否可以将查询中的所有列作为空列(不为null)或空行返回 问题答案: 通常,如果必须返回一个空行。 如果您的原始查询是 您可以将其变成子查询 这样可以确保查询的行数始终至少为1。