Загрузка...

Как сделать приложение которое работает в фоне постоянно, даже в заблоканом экране?

Тема в разделе Android создана пользователем premium 26 мар 2025. 109 просмотров

Загрузка...
  1. premium
    premium Автор темы 26 мар 2025 ID темы в лс -https://lolz.live/threads/8444444/ :kirbi: 316 19 янв 2024
    мб приоритет или в настройках подшаматить
     
    1. Intexicated
      premium, пожалуйста, дай отклик - если предложение куратора поможет, возьму себе как фишку в софт
  2. MALWARE
    MALWARE 26 мар 2025 мяукаю 11 480 12 мар 2021
    android что-ли? если да то перемести в этот раздел

    нужно создать Service
     
    26 мар 2025 Изменено
    1. premium Автор темы
      MALWARE, как это сделать?
    2. MALWARE
      premium,
      Создай класс, унаследованный от
      Service
      или
      LifecycleService
      :

      JAVA
      public class MyForegroundService extends Service {
      private static final int NOTIFICATION_ID = 1;

      @Override
      public void onCreate() {
      super.onCreate();
      startForeground(NOTIFICATION_ID, createNotification());
      }

      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
      // Здесь выполняй фоновую работу
      new Thread(() -> {
      while (true) {
      Log.d("MyForegroundService", "Сервис работает...");
      try {
      Thread.sleep(5000); // Каждые 5 секунд лог
      } catch (InterruptedException e) {
      e.printStackTrace();
      }
      }
      }).start();

      return START_STICKY;
      }

      @Override
      public IBinder onBind(Intent intent) {
      return null; // Не используем биндинг
      }

      @Override
      public void onDestroy() {
      super.onDestroy();
      Log.d("MyForegroundService", "Сервис уничтожен");
      }

      private Notification createNotification() {
      String channelId = "foreground_service_channel";
      NotificationChannel channel = new NotificationChannel(
      channelId, "Foreground Service", NotificationManager.IMPORTANCE_LOW
      );
      NotificationManager manager = getSystemService(NotificationManager.class);
      manager.createNotificationChannel(channel);

      return new NotificationCompat.Builder(this, channelId)
      .setContentTitle("Фоновый сервис")
      .setContentText("Сервис выполняет работу в фоне")
      .setSmallIcon(R.drawable.ic_launcher_foreground)
      .build();
      }
      }
      Добавь в
      AndroidManifest.xml
      :

      XML
      <service
      android:name=".MyForegroundService"
      android:foregroundServiceType="mediaPlayback"
      android:exported="false" />
      Заменяй
      mediaPlayback
      на то, что подходит для твоего сервиса, например,
      dataSync
      ,
      location
      ,
      phoneCall
      и т. д.


      Запуск сервиса:

      JAVA
      Intent serviceIntent = new Intent(context, MyForegroundService.class);
      ContextCompat.startForegroundService(context, serviceIntent);
      Остановка сервиса:

      JAVA
      Intent serviceIntent = new Intent(context, MyForegroundService.class);
      context.stopService(serviceIntent);
      Если Android убьёт сервис, то он перезапустится сам, так как мы используем
      START_STICKY
      в
      onStartCommand()
      .
  3. Intexicated
    Intexicated 26 мар 2025 Не будь рабом своего члена, и женщин. 2896 8 фев 2025
    MALWARE, почему то так кажется, что это не поможет. Так как сама система андроида через некоторое время убирает приложение в неактивные.
     
    1. MALWARE
      Intexicated, ну, тогда надо поставить приложению игнорирование оптимизации батареи
    2. Intexicated
      MALWARE, это тоже в коде можно сделать? Можешь подсказать как?
    3. MALWARE
      Intexicated, нет, это делается в настройках андроида
Top