Android onResume中的视图为空

Android onResume中的视图为空,android,android-activity,android-view,android-lifecycle,Android,Android Activity,Android View,Android Lifecycle,我在onCreate中初始化视图,有时在最小化应用程序后,某些用户的视图为空。我无法重现这个错误。GuiReceiver是更新活动视图的接收器 以下是我的简化代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.player_activity); tvTitle = (Tex

我在onCreate中初始化视图,有时在最小化应用程序后,某些用户的视图为空。我无法重现这个错误。GuiReceiver是更新活动视图的接收器

以下是我的简化代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.player_activity);
    tvTitle = (TextView) findViewById(R.id.title);
}

@Override
protected void onResume() {
    super.onResume();

    if (tvTitle != null)
        FirebaseCrash.log("onResume - tvTitle != null");
    else
        FirebaseCrash.log("onResume - tvTitle == null");

    IntentFilter filter = new IntentFilter();
    filter.addAction(CommonConstatns.GUI_UPDATE_ACTION);

    if (receiver == null) {
        receiver = new GuiReceiver();
        receiver.setPlayerActivity(this);
    }
}    

@Override
protected void onPause() {
    super.onPause();
    if (receiver != null) {
        unregisterReceiver(receiver);
        FirebaseCrash.log("GUIReceiver unregistered");
    }
}

应用程序的进程随时可能被系统终止,但不保证会调用onDestroy。这可能是某些用户出现问题的原因。您可以通过打开足够的应用程序来复制它,以便系统声明内存并终止应用程序进程。 您可以尝试在onPause中保存实例,并在onResume中还原它。
这只是两种方法中的一个函数调用。

我从未遇到过这样的问题,但考虑到@Volodymyr Khodonovych和@jdesesquelles编写的建议,您可以稍微改进代码。您可以检查onResume方法中是否设置了ContentView。您可以按照此处描述的方式获取其值:。接下来,您可以检查它是否不同于null。如果为null,则表示未设置,Android会终止您的应用程序,您可以尝试使用与onCreate相同的方式设置它和此活动的所有视图,但这次是使用onResume方法。我不知道这是否是最好和有效的解决方案。也许这只发生在资源有限的特定设备上,但我会在一开始尝试这样做。至少您可以从某种程度上开始改进应用程序的解决方案。

除非tvTitle被声明为类的实例变量,否则我会将以下代码行移到onResume方法中:

tvTitle = (TextView) findViewById(R.id.title);

如果没有足够的内存,Android会杀死你的应用程序。然后,当您从最近的应用程序还原应用程序时,它会还原活动堆栈,但不会调用onCreate方法。那么如何在@VolodymyrKhodonovych修复它呢