使用 onPause 回调最小化一段时间后重新打开 Android 应用程序

Reopen Android app after some time when minimized using onPause callback

提问人:Wylliam Borba Bassos 提问时间:10/27/2022 更新时间:10/27/2022 访问量:469

问:

我正在开发一个 Android 应用程序,由于某种原因,它尚未在随机时间被识别出来,它会最小化自己。我想使用最小化应用程序时调用的 onPause 回调函数以编程方式重新打开它。

如前所述,能够制定规则以在一段时间后调用应用程序重新打开,以便它不会立即使用 Timer 和 TimerTask 以及布尔键重新打开:

  private Timer mActivityTransitionTimer;
  private TimerTask mActivityTransitionTimerTask;
  public boolean wasInBackground;
  private final long MAX_ACTIVITY_TRANSITION_TIME_MS = 3000;

  @Override
  protected void onPause() {
    super.onPause();
    System.out.println("debug Pause/Resume: --- P A U S E ----");

    startActivityTransitionTimer();
  }

  @Override
  protected void onResume() {
    super.onResume();
    System.out.println("debug Pause/Resume: ---- R E S U M E ---");

    stopActivityTransitionTimer();
  }

  public void stopActivityTransitionTimer() {
    if (this.mActivityTransitionTimerTask != null) {
        this.mActivityTransitionTimerTask.cancel();
    }

    if (this.mActivityTransitionTimer != null) {
        this.mActivityTransitionTimer.cancel();
    }

    this.wasInBackground = false;
  }

  public void startActivityTransitionTimer() {
    this.mActivityTransitionTimer = new Timer();
    this.mActivityTransitionTimerTask = new TimerTask() {
      public void run() {
        wasInBackground = true;
        System.out.println("debug Pause/Resume: --- NEED REOPENE  --");
      }
    };

    this.mActivityTransitionTimer.schedule(
      mActivityTransitionTimerTask,
      MAX_ACTIVITY_TRANSITION_TIME_MS
    );
  }

我需要将 NEED REOPEN 日志替换为使应用程序重新打开的内容。 我已经试过了:

  Intent launchIntent = getPackageManager().getLaunchIntentForPackage("package");
  if (launchIntent != null) {
      startActivity(launchIntent);//null pointer check in case package name was not found
  }

  Intent intent = new Intent(Intent.ACTION_MAIN);
  intent.setComponent(new ComponentName("package","package.Activity"));
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  startActivity(intent);

没有任何效果,我在一项活动中

Android-Activity 自动化 启动-Activity Onpause

评论

0赞 Ashu Kumar 10/28/2022
当应用程序最小化然后活动和片段程序自动 holt 时,使应用程序在后台工作的唯一方法是。在您的情况下,请在一段时间后再次打开应用程序。在没有用户干预的情况下打开应用程序是一种不好的做法。您的应用可能会因此类行为而被 Google Play 商店保留。SERVICESERVICE
0赞 Wylliam Borba Bassos 10/28/2022
有趣的是,非常感谢您的提示,我会做这个测试。我的应用是工业应用,未在 Google Play 商店中发布。
0赞 Wylliam Borba Bassos 10/28/2022
对于服务,您将采用什么策略来识别调用了 onPause?例如,监控单例变量是否有效?
0赞 David Wasser 10/28/2022
您可以尝试使用您的启动方法,但调用应用程序,而不是上下文。您的应用运行的 Android 版本是什么?IntentstartActivity()ContextActivity
0赞 Wylliam Borba Bassos 10/28/2022
安卓 11。minSdkVersion 19 targetSdkVersion 26

答: 暂无答案