如何关闭所有打开的活动并从Java类中打开一个新活动

时间:2016-08-17 12:06:25

标签: java android android-layout android-fragments countdowntimer

我创建了一个从onFinish()扩展的类,它有一个方法timer,在activity到期时调用。

有6个活动,当计时器到期时,用户可以在任何CounterTimer中,所以Finish()Alert Message方法调用时,我需要向Login显示Intent class用户,我需要将用户重定向到Normal Class页面。

由于我无法在context中拨打context,因此我无法通过Intent,因为用户可以参加任何活动,因此事情变得令人困惑。

我写过以下代码,但它没有帮助。

我在这里使用了上下文,但是在将public class CounterClass extends CountDownTimer implements ITMServiceEvent { @Override public void onFinish() { if(sql_code.equalsIgnoreCase("0")) { String resultCode = command1.getString("result"); context.startActivity(context.getApplicationContext(), MainActivity.class); } 传递给CounterClass counterClass= new CounterClass(180000,1000); counterClass.setTextView(tvTimer); counterClass.start();

时给出了错误消息
{{1}}

在片段

中的向导开始时调用计时器
{{1}}

1 个答案:

答案 0 :(得分:1)

您的问题有两个部分,首先是如何清理活动堆栈并在其上启动一个新的活动,我想这将是您的案例中的LoginActivity。

要执行此操作,您需要在启动时设置LoginActivity Intent的标志,

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

第二部分是,您希望能够在向用户显示对话框后完成当前活动。我假设您的Timer是一个服务类,它在后台运行。告诉你当前活动时间到了!是发送广播消息。最好LocalBroadcastManager可以帮助您。您可以拥有一个BaseActivity类,其中所有6个活动都可以从中扩展,您可以在LocalBroadcastManager类中注册/取消注册BaseActivity这些活动(在onResume中注册,并且取消注册onPause)。注册后,您只需要实现并处理onReceive方法,您可以在该方法中显示对话框并在完成当前对话后启动LoginActivity