活动过渡API请求活动过渡一次



我正在尝试在应用程序的背景下实现活动过渡更新。我的目标是一次请求活动过渡更新,并在后台始终获得活动过渡更新。为了实现这一目标,我实施了以下内容:

PendingIntent pi = PendingIntent.getBroadcast(mApplicationContext, 100, intent,
                PendingIntent.FLAG_NO_CREATE);
        if (pi == null) {
            pi = PendingIntent.getBroadcast(mApplicationContext, 100,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);
            Task<Void> task = ActivityRecognition.getClient(mApplicationContext)
                    .requestActivityTransitionUpdates(atr, pi);
            task.addOnCompleteListener(task1 -> {
                if (task1.isSuccessful()) {
                    Log.v(TAG, "Travel behavior activity-transition-update set up");
                } else {
                    Log.v(TAG, "Travel behavior activity-transition-update failed set up: " +
                            task1.getException().getMessage());
                    task1.getException().printStackTrace();
                }
            });
        }

因此,在此代码中,如果PendingIntent.getBroadcast(mApplicationContext, 100, intent,PendingIntent.FLAG_NO_CREATE);返回null,我致电requestActivityTransitionUpdates方法。否则,我不要求,因为已有待处理意图已要求活动过渡更新。

但是,此代码不起作用。在第一个requestActivityTransitionUpdates之后,PendingIntent.getBroadcast(mApplicationContext, 100, intent, PendingIntent.FLAG_NO_CREATE)返回待处理意图,我不致电requestActivityTransitionUpdates,我停止获得过渡更新。

如果我通过删除PendingIntent.getBroadcast(mApplicationContext, 100, intent, PendingIntent.FLAG_NO_CREATE)行使用以下代码:

PendingIntent pi = PendingIntent.getBroadcast(mApplicationContext, 100,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);
            Task<Void> task = ActivityRecognition.getClient(mApplicationContext)
                    .requestActivityTransitionUpdates(atr, pi);
            task.addOnCompleteListener(task1 -> {
                if (task1.isSuccessful()) {
                    Log.v(TAG, "Travel behavior activity-transition-update set up");
                } else {
                    Log.v(TAG, "Travel behavior activity-transition-update failed set up: " +
                            task1.getException().getMessage());
                    task1.getException().printStackTrace();
                }
            });

我不断获得过渡更新。但是这样,我必须每次打开应用程序时要求过渡更新。在每个过渡更新请求之后,即使没有发生实际的活动过渡,API即使在我的广播节目类中返回当前活动。

那么,有没有办法一次请求过渡更新并一直保持过渡更新?

您可以使用第二种方式。

但是,正如您所说

您可以获得该事件的时间,如果它是旧的时间,或者通过保存最后一个收到的db或共享首选项的最后一个收到的时间。

相关内容

  • 没有找到相关文章

最新更新