android - 设置警报管理器正在创建我的主要 Activity 的 2 个实例

标签 android alarmmanager start-activity

我有 2 个 Activity ,一个 Main Activity 和 SetAlarm Activity。我从 Main 调用 SetAlarm Activity。当我设置闹钟时,我创建了一个 main 实例。如何在不创建 Main 的另一个实例的情况下设置警报,或者如何在设置警报之前杀死 main?对此很陌生。我已经阅读了几个警报管理器示例,但它们似乎都设置了一个新的 Intent ,我认为这就是创建我的 2 个实例的原因。这是你设置闹钟的方式吗?它确实熄灭了。

下面是我如何从 Main 调用 SetAlarm:

public void setAlarm(View view) {
    Intent intent = new Intent(this, SetAlarmActivity.class);
    startActivityForResult(intent, 2);  
} 

我是这样设置闹钟的:

public void setUpAlarm() {
    if (VERBOSE) Log.v(TAG, "+++ IN setUpAlarm +++");                   
        PLAY_MUSIC = "Y";
        Intent intentAlarm = new Intent(this, MainActivity.class);
        intentAlarm.putExtra("playMusic",PLAY_MUSIC);
        intentAlarm.putExtra("mPos", mPos);
        intentAlarm.putExtra("result",ALARM_SET);
        setResult(RESULT_OK,intentAlarm);
        pIntent = PendingIntent.getActivity(this, 12345, 
                intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager am = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
        am.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), pIntent );
    } // setAlarmPlaySong

我主要关闭了闹钟:

@Override
public void onResume() {
    if (VERBOSE) Log.v(TAG, "+++ IN onResume +++");
    super.onResume();  
    Intent intent = getIntent()
    if (intent.hasExtra("playMusic")  && intent.hasExtra("mPos")) {
   playMusicFlag = intent.getStringExtra("playMusic"); 
   mPos = intent.getIntExtra("mPos", 0);   
   if (playMusicFlag.equalsIgnoreCase("Y")) {
       if (VERBOSE) Log.v(TAG, "+++ playMusicFlag is SET+++");
           playSongs();
               showStopAlarmButton();
       } // if    
   }
}

最佳答案

如果您希望您的 startActivity 不启动多个 alam Activity 实例 你应该去你的 list 并且必须为你的警报 Activity 添加一个名为 launchMode 的属性并将其设置为 SingleTop 这将确保只有一个实例保留在 taskk 返回堆栈中(每个 Activity 都以 LIFO 方式驻留的地方)

关于android - 设置警报管理器正在创建我的主要 Activity 的 2 个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128091/

相关文章:

android - 在父 xml 中添加复选框时,expandablelistview 不会展开

Android:解析包含 Html 实体、Html 字符和 URL 地址的 XML 文件?

android - ActionBar 下方的持久性 BottomSheet

android - 将微调器添加到应用程序,然后崩溃

android - 使用 Alarmmanager 在特定时间启动服务

android - AlarmManager.set不准确重复问题

java.io.NotSerializedException : android. app.PendingIntent

android - java.lang.IllegalArgumentException : Can only use lower 16 bits for requestCode

android - startChooser() 方法和 startActivity() 之间的区别

java - 如何在外包静态函数中启动 Intent?