我想在某个时间关闭某项活动。是否可以使用AlarmManager关闭此活动?
答案 0 :(得分:0)
我建议您接收广播作为来自闹钟的响应并将广播发送到活动中的非静态接收器,如果用户在活动中它将接收它并且在onReceive命中完成
修改:
我的意思是使用静态BroadcastReceiver来接收AlarmManager广播。所述接收器将广播发送到BroadcastReceiver的动态实例(将侦听onStart并在onStop上停止)。这样做的原因是,即使Activity不在前台甚至存在(用户在报警达到之前退出应用程序),AlarmManager回调也会调用,因此静态BroadcastReceiver。如果用户没有退出应用程序,那就是动态分配的BroadcastReceiver进入的位置。
动态分配接收器的onReceive方法是调用ActivityName.this.finish()
来实际销毁当前活动的方法。
详细了解BroadcastReceiver,finish()
答案 1 :(得分:0)
我没有尝试完成一项活动,但我确信它有效。
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
this.finish();
Log.i(TAG," get activity-reference --> this ");
}
};
context.getApplicationContext().registerReceiver(br, new IntentFilter("com.cocus.panicbutton.anotherbroadcast") );
PendingIntent pi = PendingIntent.getBroadcast( context.getApplicationContext(), 0, new Intent("com.cocus.panicbutton.anotherbroadcast"),0 );
AlarmManager am = (AlarmManager)(context.getApplicationContext().getSystemService( Context.ALARM_SERVICE ));
Log.i(TAG,"receiver registered");
// starting the Alarm-Timer
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() +2*1000, pi);
// 2*1000 = 2 seconds