在我的 Android 应用程序中,当用户尝试从一个活动转换到另一个活动时,可能会有一些全局状态表明他们需要先完成一些其他操作。
为此,我使用以下代码编写了一个类:
private static WeakReference<Activity> oldActivityReference;
private static Intent waitingIntent;
public static void pushActivity(Activity currentActivity, Intent newActivityIntent) {
Intent blockingIntent = ThisClass.getBlockingActivity();
if (blockingIntent != null) {
ThisClass.oldActivityReference = new WeakReference<Activity>(currentActivity);
ThisClass.waitingIntent = newActivityIntent;
currentActivity.startActivity(blockingIntent);
return;
}
currentActivity.startActivity(newActivityIntent);
}
当阻塞活动完成时,它调用 ThisClass.blockingActivityFinished()。这将检查对旧活动的弱引用是否仍然存在,如果存在,则从该活动启动原始意图。如果没有,它将从我的应用程序的上下文中启动原始意图。
我的问题是,
这听起来合理吗?这种技术是否存在任何潜在的内存泄漏问题?有没有更好的方法来实现这一点?
编辑 - 需要明确的是,可能触发中断的事件类型是 1) 指示当前应用程序版本已弃用的服务器 ping 2) 指示用户凭据不再有效的任何服务器 RPC。我不想为每个 Activity 添加逻辑来处理这些检查,并在它们完成后照常恢复业务。这违反了 DRY,并且在团队环境中容易出错。