Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
kermet17
0 / 0 / 0
Регистрация: 25.03.2017
Сообщений: 79
1

Как сделать не завершающий фоновый процесс

20.01.2019, 10:55. Просмотров 470. Ответов 4

Имею проблему нужно чтобы служба приложении работала в фоновом режиме и показывала оповещения даже когда пользователь удалил его из перечня запущенных программ. Пользовался такими приложениями знаю, что такое возможно но как. У меня оповещения показывает только когда приложение активно или свернутое. Что нужно изменить или добавить в коде?
Запускаю приложение на xiaomi redmi note 4x Andoird 7.0(API 24)

YourService.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class YourService extends Service {
 
    private static final int NOTIF_ID = 1;
    private static final String NOTIF_CHANNEL_ID = "Channel_Id";
 
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
 
        startForeground();
 
        return super.onStartCommand(intent, flags, startId);
    }
 
 
    private void startForeground() {
        Intent notificationIntent = new Intent(this, MainActivity.class);
 
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                notificationIntent, 0);
 
        startForeground(NOTIF_ID, new NotificationCompat.Builder(this,
                NOTIF_CHANNEL_ID) 
                .setOngoing(true)
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setContentTitle(getString(R.string.app_name))
                .setContentText("Service")
                .setContentIntent(pendingIntent)
                .build());
    }
}
App.java
Java
1
2
3
4
5
6
7
8
9
public class App extends Application {
 
    @Override
    public void onCreate() {
        super.onCreate();
 
        startService(new Intent(this, YourService.class));
    }
}
AndroidManifest.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.user1.yourservice">
    <uses-permission android:name="android.permission.INTERNET" />
 
    <application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
        <service
            android:name=".YourService"
            android:enabled="true"
            android:exported="true"></service>
    </application>
 
</manifest>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2019, 10:55
Ответы с готовыми решениями:

Фоновый процесс, который дожен регулярно уведомлять текущую активность
Задача такая. Есть некий фоновый процесс, который должен регулярно слать уведомления текущей...

Как запустить фоновый процесс (daemon)
Пытаюсь запустить процесс на Java в фоновом режиме. С помощью Runtime.getRuntime() получаю ссылку...

Как создать постоянный фоновый процесс в ASP.NET Core MVC?
Как мне в моём ASP.NET Core MVC приложении создать некоторый процесс, компонент, который...

Как форму при нажатии на красную кнопку отправить в фоновый процесс?
...

Как запустить программу как фоновый процесс
Здравствуйте! Нужно написать программу, которая будет запускаться как фоновый процесс, то есть...

4
_TRUE_
0 / 0 / 0
Регистрация: 04.02.2015
Сообщений: 1
20.01.2019, 11:27 2
То есть, если я правильно понял, ты хочешь чтобы твой сервис работал даже пользователь сам его убьет.
Ну первое что пришло на ум, это запускать сервис каждую минуту, с помощью BroadcastReceiver. Есть там такое намерение android.intent.action.TIME_TICK
Сам не пробовал, но интересно сработает или нет?
0
leonardo666
3 / 3 / 0
Регистрация: 16.09.2016
Сообщений: 127
24.01.2019, 13:28 3
Я в своем приложении делал отдельный поток и все работало прекрасно, но с появлением ANDROID O все стало еще сложнее. Дело том что гугл сделал ограничение на работу фоновых служб а именно, теперь длительно работающие процессы должны быть видны пользователю то есть всегда будет висеть уведомление в трее или система его через несколько секунд убьет. Другими словами все конечно работает если это сделать но висящий значок немного напрягает.

https://habr.com/ru/company/kaspersky/blog/334652/
0
zoleg
40 / 39 / 7
Регистрация: 10.01.2012
Сообщений: 372
25.01.2019, 21:49 4
Цитата Сообщение от leonardo666 Посмотреть сообщение
будет висеть уведомление в трее или система его через несколько секунд убьет. Другими словами все конечно работает если это сделать но висящий значок немного напрягает.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class HideNotificationService extends Service {
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
    @Override
    public void onCreate() {
        Notification.Builder builder = new Notification.Builder(this)
                .setSmallIcon(R.drawable.ic_launcher);
        Notification notification;
        if (Build.VERSION.SDK_INT < 16)
            notification = builder.getNotification();
        else
            notification = builder.build();
 
        startForeground(777, notification);
        stopForeground(true);
    }
 
}
777 это код с которым запущен нотификэйшн.
0
elf32
-12 / 9 / 0
Регистрация: 15.02.2013
Сообщений: 92
30.01.2019, 16:21 5
Может быть, при помощи AlarmManager установить будильник (setRepeating) для своего BroadcastReceiver, с повтором в минуту к примеру. Даже если пользователь остановит процесс, он повторно будет создан при срабатывании будильника.
0
30.01.2019, 16:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2019, 16:21

Фоновый процесс
Здравствуйте. Как сделать так, чтобы приложение после сворачивания в трей (само сворачивание уже...

Фоновый процесс в bitrix
САБЖ, хотелось бы узнать как реализовать сие в битриксе.

Основной и фоновый процесс
Есть основной процесс, который работает в интерфейсе программы (WinForms), и есть фоновый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru