我了解Android生命周期的概念以及涉及的不同事件。我创建了一个通知服务,让用户知道他/她的回合时间。我只希望在用户不再查看应用程序中的某个活动时执行此操作。在使用该应用程序时,他/她将知道他/她是否轮到他了。
问题:
如果我在Main.java类上设置生命周期事件,当用户导航到另一个类时会发生什么? onPause事件是否会触发?系统如何知道要执行哪些onPause事件,因为用户可能在单个会话期间离开10个或更多活动?
我目前正在Main.java类中的onStop和onRestart事件期间启动服务并停止服务。这没有按预期工作。即使我在系统中也会发生通知,由于同时调用外部api导致系统锁定。 (见下文)。
public void onRestart() {
super.onRestart();
Intent i = new Intent(Main.this, NotifyService.class);
Main.this.stopService(i);
}
public void onStop() {
super.onStop();
Intent i = new Intent(Main.this, NotifyService.class);
i.putExtra("UserId", userId);
Main.this.startService(i);
}
感谢任何帮助。
答案 0 :(得分:1)
假设您在Activity-A中,并且转移到Activity-B,则会调用Activty-A的生命周期回调 - 在这种情况下立即调用Activity-A.onPause()和Activity-A。如果Activity-A在那段时间内被销毁,onDestroy()可能。
用于启动/停止服务的正确方法是onResume()(而不是你使用的onRestart())和onPause()(而不是你使用的onStop())
答案 1 :(得分:0)
您可以设置一个计数器,在Activity的onResume()中递增它,并在onPause()上递减。如果您的计数器为0,则表示用户不在您的活动中(正在使用其他应用程序)。如果它不是1,那么他/她正在使用您的应用程序。请注意,您的计数器应保留在活动范围之外,因为它可能会被删除。我将Application类子类化,并将那个全局范围的计数器保留在那里。