Android -调用finishAndRemoveTask方法后从未启动新活动

v1uwarro  于 2023-03-21  发布在  Android
关注(0)|答案(1)|浏览(308)

我正在小米Mi 9T Andoird 10 API 29上测试我的安卓应用程序.
其流程如下:
在活动A中,我启动配置设置活动以启用特定权限

Intent intent = new Intent("<PERMISSION_ON_CONFIGURATION_SETTINGS>");

在设置屏幕中,我需要再深入2个级别的详细信息,直到可以启用权限
在我的Activity A中,有一个计时器,它会一直监视直到权限被授予:

public void timerStart() {
    this.timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            if (isAccessibilityEnabled()) {
                ActivityA.this.timer.cancel();
                ActivityA.this.finishAndRemoveTask();
                Intent intent = new Intent(ActivityA.this, ActivityB.class);
                context.startActivity(intent);
                return;
            }
        }
    }, 0, 500);
}

结果是,计时器识别出权限已被授予,finishAndRemoveTask()方法结束了活动A和所有配置子活动,但活动B从未启动。

pgky5nke

pgky5nke1#

我认为问题出在context.startActivity(intent);我认为您可以直接使用它startActivityIntent(),而不使用context,对于其他事情,您可以使用计时器和finishAndRemoveTask,而不使用ActivityA.this
因此,这个方法的最终代码可能如下所示:

public void timerStart() {
    timer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
        if (isAccessibilityEnabled()) {
          timer.cancel();
          finishAndRemoveTask();
          Intent intent = new Intent(A.this, B.class);
          startActivity(intent);
          return;
        }
      }
    }, 0, 500);
  }

如果问题仍然存在,可以考虑将startActivity(intent)移到finishAndRemoveTask()方法之前;虽然我不认为这不是一个问题,但还是试试吧!

相关问题