后台服务在奥利奥中不起作用

2024-06-25

如果我也杀死应用程序实例,我想在后台运行我的应用程序。但在我杀死我的应用程序后,该服务也停止工作。这是我的代码,请任何人帮助我解决我的问题。

我按照此链接在后台运行,但如果删除实例,它就不起作用。如果实例也被删除,谁能告诉我如何运行后台服务?

这是我的主要活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ctx = this;
    setContentView(R.layout.activity_main);
    Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(MainActivity.this, ALARM_REQUEST_CODE, alarmIntent, 0);
    mSensorService = new SensorService(getCtx());
    mServiceIntent = new Intent(getCtx(), mSensorService.getClass());
    if (!isMyServiceRunning(mSensorService.getClass())) {
        startService(mServiceIntent);
    }
}

这是我的服务等级

   public class SensorService extends Service{

public int counter=0;
public SensorService(Context applicationContext) {
    super();
    Log.i("HERE", "here I am!");
}

public SensorService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    startTimer();
    return START_STICKY;
}
@Override
public void onDestroy() {
    super.onDestroy();
    Log.i("EXIT", "ondestroy!");
    Intent broadcastIntent = new Intent("uk.ac.shef.oak.ActivityRecognition.RestartSensor");
    sendBroadcast(broadcastIntent);
  }

private Timer timer;
private TimerTask timerTask;
long oldTime=0;
public void startTimer() {
    //set a new Timer
    timer = new Timer();

    //initialize the TimerTask's job
    initializeTimerTask();

    //schedule the timer, to wake up every 1 second
    timer.schedule(timerTask, 1000, 1000); //
}

/**
 * it sets the timer to print the counter every x seconds
 */
public void initializeTimerTask() {
    timerTask = new TimerTask() {
        public void run() {
            Log.i("in timer", "in timer ++++  "+ (counter++));
        }
    };
}

/**
 * not needed
 */


@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

}


说来话长。我已经经历过了。还是落实了。现在,我的服务在每个 boot_complete 事件上运行,并一直保持运行(带有通知)。

  • 官方文档:

大NO。 Google Android 开发人员文档很差,也没有适当的示例示例。这是理论性的,而且只是理论性的。如果有兴趣请继续阅读

https://developer.android.com/about/versions/oreo/background https://developer.android.com/about/versions/oreo/background

概要1:您只能收到BOOT_COMPLETE而传统接收机中只有很少的广播。通过始终运行的服务中的代码注册它们,休息在服务中实现运行时所需的所有广播接收器。

概要2:再说一次,你不能总是在 8.0 (Oreo) 或更高版本中运行进程... 要实现始终运行的进程...创建一个Intentservice具有适当的类型通知ongoing和做OnStartCommand START_STICKY并使用代码注册接收者OnCreate

如何实施:我已经实现了它,参考这里:奥利奥:广播接收器不工作 https://stackoverflow.com/questions/49573303/oreo-broadcast-receiver-not-working/49865151#49865151

现在你的问题:如果我的应用程序杀死了我的应用程序,我想在后台运行它 应用程序实例也。

借助我自己的上述实现链接,您可以实现它

*条款和条件

您的设备必须已发布并按原样烧录适当的 Android 操作系统。

是的,我正在使用安卓:

No... You are Using Funtouch OS : VIVO ( By modifying Android)

市场上有很多设备COLOR OS:OPPO(通过修改Android) .... ....

  1. 谷歌已经让它变得复杂了......一个版本一个版本......
  2. 没有适当的文档和示例代码......
  3. 现在独立移动设备制造商制造了很多 变化to allow only selective applications run in background like WhatsApp, Facebook, Google Twitter Instagram

现在您将询问开发人员问题如果这些应用程序在后台运行,那么我也可以让我的应用程序在后台运行......

不...它们是基于操作系统的修改,用于检查服务是否来自允许的供应商,然后只有它可以在后台存活。如果他们不允许这些供应商,那么就没有人会购买不运行这些著名社交应用程序的手机。

嘘嘘嘘嘘……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

后台服务在奥利奥中不起作用 的相关文章

随机推荐