Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
#1

При очистке недавних приложений на андроид 4.2.2 убивается и сервис - Программирование Android

18.06.2015, 20:17. Просмотров 306. Ответов 0
Метки нет (Все метки)

Здравствуйте!
У меня есть приложение, которое может вызвать сервис. Сервис должен работать всё время, пока пользователь не отменит его сам. Сервис периодично должен отправлять Notifications. Проблема: при тестировании приложения на Android 4.2.2 всё работает и уведомления отправляются в заданное время, однако при очистке недавних приложений (есть такая функция) сервис перестаёт отсылать уведомления.
При тестировании на эмуляторе eclipse android 2.3.3 даже при убивании процесса основного приложения процесс сервиса продолжает жить и виден во вкладке device
Прилагаю код сервиса и кусок класса, его вызывающего
MyService.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public class MyService extends Service {
    NotificationManager nm;
    final String LOG_TAG = "myLogs";
    int i = 0;
    Date now;
    Timer timer;
    TimerTask tTask;
    long interval = 60000;
    String time;
    DB myDb = new DB(this);
 
    @Override
    public void onCreate() {
        super.onCreate();
        timer = new Timer();
        tTask = new TimerTask() {
            public void run() {
                nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                sendNotif();
            }
        };
        timer.schedule(tTask, 1000, interval);
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        interval = 0;
        timer.cancel();
        Log.d(LOG_TAG, "onDestroy");
        nm = null;
    }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        time = intent.getStringExtra("time");
        return START_REDELIVER_INTENT;
    }
 
    void sendNotif() {
        if (interval == 0)
            return;
        Log.d(LOG_TAG, "running sendNotif!");
        now = new Date();
        SimpleDateFormat sdfNow = new SimpleDateFormat("HH:mm");
        String nowTime = sdfNow.format(now);
        Log.d(LOG_TAG, "nowTime=" + nowTime + "time=" + time);
        if (nowTime.equals(time)) {
            myDb.open();
            SimpleDateFormat sdf = new SimpleDateFormat("dd.MM");
            Date date = new Date();
            String today = sdf.format(date) + "%";
            Log.d(LOG_TAG, "today=" + today);
            String query = "select _id, name, surname, birthday from mytable where image = "
                    + R.drawable.clock_green
                    + " and birthday like '"
                    + today
                    + "';";
            Cursor c = myDb.execQuery(query);
            if (c.moveToFirst()) {
                int surnameColIndex = c.getColumnIndex("surname");
                int nameColIndex = c.getColumnIndex("name");
                String name = c.getString(surnameColIndex) + " "
                        + c.getString(nameColIndex) + " и др.";
                // 1-я часть
                Notification notif = new Notification(R.drawable.ic_launcher,
                        "zzz!", System.currentTimeMillis());
 
                // 3-я часть
                Intent intent = new Intent(this, Start.class);
                // intent.putExtra(MainActivity.FILE_NAME, "somefile");
                PendingIntent pIntent = PendingIntent.getActivity(this, 0,
                        intent, 0);
 
                notif.setLatestEventInfo(this, "yyy",
                        name, pIntent);
 
                // ставим флаг, чтобы уведомление пропало после нажатия
                notif.flags |= Notification.FLAG_AUTO_CANCEL;
                notif.defaults |= Notification.DEFAULT_SOUND;
                // notif.defaults |= Notification.DEFAULT_VIBRATE;
 
                // отправляем
                nm.notify(i, notif);
                nm = null;
                i++;
            }
            myDb.close();
        }
 
    }
И метод класса, вызывающий сервис
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    @Override
    protected void onResume() {
        Boolean notif = sp.getBoolean("notif", false);
        String time = sp.getString("time", "");
        Log.d(LOG_TAG,"notif="+notif+" time"+time);
        if(notif==true&&!TextUtils.isEmpty(time)){
            startService(new Intent(this, MyService.class).putExtra("time",time));
        }
        else{
            stopService(new Intent(this, MyService.class));
        }
        getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        super.onResume();
    };
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2015, 20:17     При очистке недавних приложений на андроид 4.2.2 убивается и сервис
Посмотрите здесь:
Android Как создать сервис, который не убивается встроенным в андроид таск киллером?
Android Где используют сервис в андроид?
Android Программирование приложений для Андроид на C++
Запуск приложений с Vulkan API на Андроид Android
Backend Сервер для андроид приложений Android
Apk tool и декомпиляция андроид приложений Android
Android Для чего производится индексация Андроид-приложений?
Android С чего начать разработку приложений и игр на Андроид?
Подскажите книги для разработки приложений под андроид Android
Продажа приложений под андроид, посредсвом продажи ключей Android
Кто чем пользуется для разработки приложений под Андроид? Android
Android Разработка приложений для Андроид. С чего начать? Что нужно изучить?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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