【问题标题】:nullPointerException Crash On Call after App Minimized Long Time应用程序最小化长时间后调用 nullPointerException 崩溃
【发布时间】:2015-03-03 17:34:53
【问题描述】:

有一个名为“Configs.java”的类包含:

    public Contect context;
    public Activity currentActivity;

关于名为“App.java”的全局类:

    public static Configs configs = new Configs();

在 Main Activity Java 类 Oncreate :

    App.configs.context = getApplicationContext();
    App.configs.currentActivity = this;

On Products Activity Java Class Oncreate(主要活动未完成,必须在后台工作):

    App.configs.currentActivity = this;

长时间最小化后,它在产品活动Java类的波纹管上显示错误:

    App.configs.currentActivity = this;

空指针异常

无法使用“Bundle savedInstanceState”,因为它是活动有效的

【问题讨论】:

  • 请分享完整的 logcat 日志..

标签: java android nullpointerexception minimize


【解决方案1】:

尝试将此代码移动到 onResume() 而不是 onCreate() 并查看错误是否仍然存在。

【讨论】:

    【解决方案2】:

    在 Android 上使用静态变量并不好。 This post 解释说,Android 很可能会终止您的应用程序(终止您的应用程序实例,因此当您的应用程序重新创建并且类加载器重新实例化您的变量时静态变量变为空)以节省内存。该帖子还提到了Saving Activity state in Android,它提供了一种使用 Bundles 保存内容的替代方法。

    无论如何,如果您需要一个快速的解决方案,请将您的 Configs 类设置为单例,并使用 getter 和 setter 而不是将其公开。让 getter 检查你的单例是否为空,在这种情况下,实例化一个新的并返回它。你不会得到 NPE,但风险很大,因为它不会恢复以前的状态。

    【讨论】:

      猜你喜欢
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多