我在我们的应用程序中有多个活动。其中一个活动是启动活动,它是主要的启动器活动。它启动并初始化一些被整个应用程序使用的类,然后结束。
然后是用户大部分时间都停留在的主要活动。当通知创建时,如果应用程序关闭,则这些类将被销毁,因此应用程序会出现错误(nullpointerexception)。
我们需要做的是,如果应用程序关闭,则启动启动器活动,否则将主要活动带到前面。
我在这里尝试了多种解决方案。
- 解决方案1 - 解决方案2 - 解决方案3 这些解决方案都不起作用。任何帮助都将不胜感激。
更新1:
我想,如果我们通过检查应用程序是否正在运行来选择应该获取哪个意图的挂起意图,会怎样。
这解决了我们在多个活动中遇到的问题,但是又带来了另一个问题:如果用户在主活动中接收到通知,然后关闭应用程序但不点击通知,那么稍后当用户点击通知时,应用程序将再次出现空指针异常,因为在创建通知时应用程序正在运行。
必须有更好的方法来处理这个问题。
然后是用户大部分时间都停留在的主要活动。当通知创建时,如果应用程序关闭,则这些类将被销毁,因此应用程序会出现错误(nullpointerexception)。
我们需要做的是,如果应用程序关闭,则启动启动器活动,否则将主要活动带到前面。
我在这里尝试了多种解决方案。
- 解决方案1 - 解决方案2 - 解决方案3 这些解决方案都不起作用。任何帮助都将不胜感激。
更新1:
我想,如果我们通过检查应用程序是否正在运行来选择应该获取哪个意图的挂起意图,会怎样。
public boolean isApplicationRunning(Context context) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo task : tasks) {
if (context.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName()))
return true;
}
return false;
}
这解决了我们在多个活动中遇到的问题,但是又带来了另一个问题:如果用户在主活动中接收到通知,然后关闭应用程序但不点击通知,那么稍后当用户点击通知时,应用程序将再次出现空指针异常,因为在创建通知时应用程序正在运行。
必须有更好的方法来处理这个问题。