Android 根据从Firebase收到的命令重新启动活动

Android 根据从Firebase收到的命令重新启动活动,android,android-activity,timertask,non-static,Android,Android Activity,Timertask,Non Static,我正试图根据从Firebase收到的命令重新启动我的主要活动。我设法让它工作,但在MainActivity类中有一个TimerTask,为了从Firebase类调用Stop函数,我必须创建MainActivity类的一个新实例。这还将创建计时器的新实例。该命令将停止计时器(新启动的计时器),但旧计时器将在后台继续运行。如何在不创建新实例的情况下调用main活动中的stop函数。它是一个非静态函数,所以我不能从静态上下文调用它 这是我的代码snipet,如果有用的话 if (remoteM

我正试图根据从Firebase收到的命令重新启动我的主要活动。我设法让它工作,但在MainActivity类中有一个TimerTask,为了从Firebase类调用Stop函数,我必须创建MainActivity类的一个新实例。这还将创建计时器的新实例。该命令将停止计时器(新启动的计时器),但旧计时器将在后台继续运行。如何在不创建新实例的情况下调用main活动中的stop函数。它是一个非静态函数,所以我不能从静态上下文调用它

这是我的代码snipet,如果有用的话

    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();
                    }
                });
使用

如果出现错误,则使用

new Handler(Looper.getMainLooper()).post(new Runnable() {
                    @Override
                    public void run() {
                        new dashboardActivity().stopTimer();
                    }
                });

如果要重新启动活动,请使用以下代码:

Intent intent = getIntent();
finish();
startActivity(intent);

如果要重新启动活动,请使用以下代码:

Intent intent = getIntent();
finish();
startActivity(intent);

我使用了广播接收机,它工作了。按照这个例子

我使用了BroadcastReceiver,它工作正常。下面的示例将创建仪表板活动的新实例。这将创建一个新计时器,旧计时器将在后台继续工作。这将创建仪表板活动的新实例。这将创建一个新计时器,旧计时器将在后台继续工作。您不能使用finish();来自另一个班级。我的停止函数也在服务类中。不能使用finish();来自另一个班级。此外,我的停止函数在服务类中。