在Android中杀死某项活动,您只需使用finish()
即可。但在我的情况下,我希望在PendingIntent
被解雇时终止活动。
我的代码如下:
Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Utils.KEY_RECORD_TIME, recordLength);
PendingIntent pintent = PendingIntent.getActivity(MainActivity.this,
piNumber, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
如果我在finish()
下方添加AlarmManager
,则活动将在{{1}}中设置的时间之前被杀死。
我希望活动一直可见,直到时间结束并杀死它。有没有办法做到这一点?我在Stack Overflow,Google做了一些搜索,但找不到答案。
答案 0 :(得分:2)
您可以在活动中动态注册BroadcastReceiver
。使用待定意图,您可以使用getBroadcast()
。因此,当警报管理器调用广播接收器时,您可以在广播接收器内调用finish()
。请注意,当您不再需要时,必须取消注册接收器,例如,您在onDestroy()
中执行此操作。
答案 1 :(得分:2)
在计时器内,您可以获得待处理意图的时间延迟。
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
}
},pending intent delay);
请试一试。这对我有用
答案 2 :(得分:1)
看看onNewIntent(Intent)
。如果您可以将活动作为单个顶部开始,那么您的实例应该通过该调用接收待处理的意图。
如果您无法使用singel top,并且正在启动活动的新实例,则可以使用共享静态来获取新实例onCreate()
中的原始实例finish()
两者。