Autojs前台保活服务的实现方式

Autojs前台保活服务的实现方式,可以让应用在后台运行时保持活跃状态。

由于 Android 系统的限制,应用在后台运行时可能会被系统杀死或者进入休眠状态,导致某些操作无法及时响应或者失去连接。为了解决这个问题,我们可以使用前台保活服务来让应用在后台保持活跃状态。

本文将介绍一种基于 Notification 的前台保活实现方式,并提供相应的代码示例。

基于 Notification 的前台保活服务的代码实现示例:

let KeepAliveService = {
  /** 开启 */
  start: function (idStr, nameStr) {
    try {
      // 设置通知的标题、内容、图标等参数
      idStr = idStr || "";
      let channel_id = idStr + ".foreground";
      let channel_name = nameStr + " 前台服务通知";
      let content_title = nameStr + " 正在运行中";
      let content_text = "请勿手动移除该通知";
      let ticker = nameStr + "已启动";
      let manager = context.getSystemService(
        android.app.Service.NOTIFICATION_SERVICE
      );
      let notification;
      let icon = context
        .getResources()
        .getIdentifier(
          "ic_3d_rotation_black_48dp",
          "drawable",
          context.getPackageName()
        );
      // Android 8.0 及以上版本需要创建通知渠道
      if (device.sdkInt >= 26) {
        let channel = new android.app.NotificationChannel(
          channel_id,
          channel_name,
          android.app.NotificationManager.IMPORTANCE_DEFAULT
        );
        channel.enableLights(true);
        channel.setLightColor(0xff0000);
        channel.setShowBadge(false);
        manager.createNotificationChannel(channel);
        // 创建通知对象
        notification = new android.app.Notification.Builder(context, channel_id)
          .setContentTitle(content_title)
          .setContentText(content_text)
          .setWhen(new Date().getTime())
          .setSmallIcon(icon)
          .setTicker(ticker)
          .setOngoing(true)
          .build();
      } else {
        // 创建通知对象(兼容低版本 Android)
        notification = new android.app.Notification.Builder(context)
          .setContentTitle(content_title)
          .setContentText(content_text)
          .setWhen(new Date().getTime())
          .setSmallIcon(icon)
          .setTicker(ticker)
          .build();
      }
      // 发送通知
      manager.notify(1, notification);
    } catch (error) {
      toast("前台保活服务启动失败:" + error);
      toast("保活服务启动失败,不影响辅助的正常运行,继续挂机即可.");
    }
  },
  /** 停止 */
  stop: function () {
    // 取消通知
    let manager = context.getSystemService(
      android.app.Service.NOTIFICATION_SERVICE
    );
    manager.cancelAll();
  },
};

开启前台保活服务

KeepAliveService.start("test-name", "前台保活服务");

停止前台保活服务

KeepAliveService.stop();

上述代码中,我们首先定义了一个名为 KeepAliveService 的对象,它包含两个方法:start 和 stop。start 方法用于开启前台保活服务,stop 方法则用于停止它。

在 start 方法中,我们设置了通知的标题、内容、图标等参数,并创建了一个 Notification 对象。对于 Android 8.0 及以上版本,我们还需要创建一个通知渠道。最后,我们通过 NotificationManager 的 notify 方法发送通知。

在 stop 方法中,我们通过 NotificationManager 的 cancelAll 方法取消之前发送的所有通知。

最后,我们通过执行 KeepAliveService.start() 方法来开启前台保活服务,并在 5 秒钟后通过 KeepAliveService.stop() 方法停止它。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共4条

请登录后发表评论