如何关闭所有打开的活动并从 Java Class 打开一个新活动
How to close all open Activities and open a new one from a Java Class
我创建了一个从 CountDownTimer
扩展而来的 class,它有一个方法 onFinish()
,当 timer
过期时调用。
有 6 个活动,用户可以在任何 activity
计时器到期时,所以在 CounterTimer
当 Finish()
方法调用时,我需要显示一个 Alert Message
给用户,我需要将用户重定向到 Login
页面。
事情变得混乱,因为我无法在 Normal Class
中调用 Intent class
,我也无法传递 context
,因为用户可以在任何 activity 中。
我写了下面的代码,但没有用。
我在这里使用上下文,但是它在将 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();
你的问题有两个部分,首先是如何清理 Activity 堆栈并在它们之上开始一个新的 Activity,我想这将是 LoginActivity 在你的情况下。
为此,您需要设置登录标志Activity Intent 当您想要启动它时,
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
第二部分是,您希望在向用户显示对话框后能够完成当前 activity。我假设您的计时器是一个在后台运行的服务 Class。告诉当前 activity 时间到了的方法!是发送广播消息。最好 LocalBroadcastManager 可以帮助你。您可以拥有一个基础Activity class,您的所有 6 个活动都可以从中扩展,您可以 register/unregister LocalBroadcastManager
to/from BaseActivity
class(在onResume
中注册,在onPause
中注销)。注册它们后,您只需实施和处理 onReceive
方法,您可以在其中显示一个对话框并在完成当前对话框后启动 LoginActivity
。
我创建了一个从 CountDownTimer
扩展而来的 class,它有一个方法 onFinish()
,当 timer
过期时调用。
有 6 个活动,用户可以在任何 activity
计时器到期时,所以在 CounterTimer
当 Finish()
方法调用时,我需要显示一个 Alert Message
给用户,我需要将用户重定向到 Login
页面。
事情变得混乱,因为我无法在 Normal Class
中调用 Intent class
,我也无法传递 context
,因为用户可以在任何 activity 中。
我写了下面的代码,但没有用。
我在这里使用上下文,但是它在将 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();
你的问题有两个部分,首先是如何清理 Activity 堆栈并在它们之上开始一个新的 Activity,我想这将是 LoginActivity 在你的情况下。
为此,您需要设置登录标志Activity Intent 当您想要启动它时,
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
第二部分是,您希望在向用户显示对话框后能够完成当前 activity。我假设您的计时器是一个在后台运行的服务 Class。告诉当前 activity 时间到了的方法!是发送广播消息。最好 LocalBroadcastManager 可以帮助你。您可以拥有一个基础Activity class,您的所有 6 个活动都可以从中扩展,您可以 register/unregister LocalBroadcastManager
to/from BaseActivity
class(在onResume
中注册,在onPause
中注销)。注册它们后,您只需实施和处理 onReceive
方法,您可以在其中显示一个对话框并在完成当前对话框后启动 LoginActivity
。