管理正在运行的多个活动实例中的处理程序执行

问题描述 投票:0回答:1

我一直在我的应用程序中使用

mode = singleInstance
运行一项活动。在此活动 onStart() 方法中,我正在初始化这样的处理程序

Handler handler;
@Override
protected void onStart() { // running handler with post delayed of 5 seconds
   handler = new Handler();
   handler.postDelayed(() -> {
     // doing something
   }
}, 5000);

现在,当用户从任何其他应用程序返回我的 Activity 时,会触发一系列 Activity 生命周期事件

-> onCreate() // first instance created
-> onStart() // on start of first instance called
-> onCreate() // second instance created
-> onStart() // on start of second instance called
-> onDestroy() // first instance on destroy called

现在处理程序运行两次,因为 onStart() 为创建的两个不同实例调用了两次。 我想停止第一个实例的处理程序执行,因为它在创建后立即销毁。我使用

handler.removeCallbacksAndMessages(null);
它正在停止第二个实例处理程序的执行。

我如何确保只执行正在运行的活动处理程序实例?

java android multiple-instances android-handler
1个回答
0
投票

当活动结束时,您应该使用 onDestroy() 调用removeCallbacksAndMessages函数。这将清理处理程序,以便一次只运行一个处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.