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

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

18.06.2015, 20:17. Просмотров 357. Ответов 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();
    };
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2015, 20:17
Ответы с готовыми решениями:

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

Где используют сервис в андроид?
Как и где нужно использовать сервисы ?

Программирование приложений для Андроид на C++
Можно ли создавать приложения для Андроид на языке С++? И если да, то с чего...

Продажа приложений под андроид, посредсвом продажи ключей
Здравствуйте! Нужен совет: Хочу продавать приложение под андроид, но не...

Разработка приложений для Андроид. С чего начать? Что нужно изучить?
Ребят, подскажите! Хочу стать разрабом для популярной ОС Андроид, с чего...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2015, 20:17

При закрытии не убивается процесс
В проекте есть 2 формы. Когда Form1->Close(); Form2->Show();И наоборот. Во...

При выходе из приложения не убивается процесс
Соль в чем. В моей программке есть цикл do-while, общая схема такова: do { ...

Идеи по созданию приложений на ОС Андроид
Уважаемые программисты и пользователи этого уважаемого форума. Предлагаю всем...


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

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

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