我正在制作一个闹钟应用程序。我有一个活动,用户可以设置警报时间。它使用AlarmManager注册了我已设置为在警报发生时接收广播的广播接收器类别。然后,我在接收方onReceive()中开始新的活动。当第二个活动开始时,闹钟声音会在onStart()中播放。如何判断接收者是否已开始我的活动,或者用户是否正在与该应用程序进行多任务处理?当用户使警报静音,按主页按钮然后租用该应用程序时(我仍在进行声音播放活动时),我不想播放声音。

最佳答案

只需通过onReceive()方法中使用的意图发送额外的内容:



Intent intent = new Intent(this, NextActivity.class);
intent.putExtras("playSound", true);


在“声音播放”活动中,您必须在onCreate()中播放声音:

boolean playSound = getIntent().getBooleanExtra("playSound", false);


如果意图附加的“ playSound”不存在或设置为false,则将返回false;如果将其设置为true,则将返回true。



onCreate()仅被调用一次(活动开始时),而onStart()则在用户每次重新进入您的活动(即通过最近的应用程序)时被调用。您可以在生命周期中看到这一点:


当某项活动使您处于活动状态时(例如电量不足对话框),调用Paused;如果您“退出”应用程序(例如,通过主屏幕按钮),则调用Stopped。

关于android - 如何判断我的 Activity 是否由广播接收机启动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24591342/

10-15 14:25