根据从 Firebase 收到的命令重新启动 activity
Restart activity on command received from Firebase
我正在尝试根据从 Firebase 收到的命令重新启动我的主 activity。我设法让它工作,但在 MainActivity class 中有一个 TimerTask,为了从我的 Firebase class 调用 Stop 函数,我必须创建 MainActivity Class 的新实例。这也将创建一个新的计时器实例。该命令将停止计时器(新启动的计时器),但旧计时器在后台保持 运行。如何在不创建新实例的情况下调用 MainActivity 中的停止函数。它是一个非静态函数,所以我不能从静态上下文中调用它。
如果有帮助,这是我的代码片段。
if (remoteMessage.getNotification() != null) {
String msg = remoteMessage.getNotification().getBody();
Log.v("test", "FB msg is: " + msg);
if (msg.equals(COMMAND)) {
Intent i = new Intent(MyFirebaseMessagingService.this, DashboardActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
dashboardActivity.stopTimer();
// SharedPrefManager.getInstance(getApplicationContext()).storeTimer("false");
} else {
Log.v("test", "unknown");
}
}
最后,我想从 Firebase 发送一条命令,强制我的 MainActivity 完全重启。
使用
new dashboardActivity().stopTimer();
如果有错误则使用
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
new dashboardActivity().stopTimer();
}
});
如果您想重新启动 activity,请使用此代码:
Intent intent = getIntent();
finish();
startActivity(intent);
我使用了 BroadcastReceiver 并且它有效。按照这个例子 here
我正在尝试根据从 Firebase 收到的命令重新启动我的主 activity。我设法让它工作,但在 MainActivity class 中有一个 TimerTask,为了从我的 Firebase class 调用 Stop 函数,我必须创建 MainActivity Class 的新实例。这也将创建一个新的计时器实例。该命令将停止计时器(新启动的计时器),但旧计时器在后台保持 运行。如何在不创建新实例的情况下调用 MainActivity 中的停止函数。它是一个非静态函数,所以我不能从静态上下文中调用它。
如果有帮助,这是我的代码片段。
if (remoteMessage.getNotification() != null) {
String msg = remoteMessage.getNotification().getBody();
Log.v("test", "FB msg is: " + msg);
if (msg.equals(COMMAND)) {
Intent i = new Intent(MyFirebaseMessagingService.this, DashboardActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
dashboardActivity.stopTimer();
// SharedPrefManager.getInstance(getApplicationContext()).storeTimer("false");
} else {
Log.v("test", "unknown");
}
}
最后,我想从 Firebase 发送一条命令,强制我的 MainActivity 完全重启。
使用
new dashboardActivity().stopTimer();
如果有错误则使用
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
new dashboardActivity().stopTimer();
}
});
如果您想重新启动 activity,请使用此代码:
Intent intent = getIntent();
finish();
startActivity(intent);
我使用了 BroadcastReceiver 并且它有效。按照这个例子 here