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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Передача и работа с данными в диалоговых окнах http://www.cyberforum.ru/android-dev/thread1481669.html
Всем доброго времени суток. Есть рабочая программа, но в неё небольшой недочёт("недоделка"). В программе осуществляется добавление данных в БД через форму, выводятся на экран в списке. Данные возможно добавлять, удалять и нужно редактировать, но вот это как раз не работает. При нажатии на элемент в списке возникает контекстное меню, где варианты выбора: "Удалить запись" ,"Редактировать запись"....
Программирование Android Авторизация в google Google требует Oauth2 для работы с google drive Как это реализовать буду признателен за примеры (в идеале рабочий код) http://www.cyberforum.ru/android-dev/thread1481558.html
Программирование Android Не работает вывод
Не работает страница, ловлю ошибку NullPointerException, а найти не по глазам. Помогите пожалуйста. package com.example.stracking; import java.util.ArrayList; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle;
Программирование Android Не работает
Не работает страница, ловлю NullPointerException, а найти не по глазам, помогите пожалуйста package com.example.stracking; import java.util.ArrayList; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View;
Программирование Android Запись и чтение класса в файл http://www.cyberforum.ru/android-dev/thread1481484.html
Необходимо реализовать очень простую задачу, но подходящего примера в инете так и не нашел. Пусть имеется класс: class MyClass{ int a; float b; int c; public boolean SaveToBinaryFile(String filename){ } public boolean LoadFromBinaryFile(String filename){
Программирование Android Простое приложение с одной кнопкой Нужно простое приложение на Android. Суть в том, что в программе будет куча названий (не важно чего) и все одна кнопка, при нажатии на которую, рандомайзером будет выведено на экране устройство одно из многих названий. Ну и конечно же кнопка повтора операции. подробнее

Показать сообщение отдельно
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147

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

18.06.2015, 20:17. Просмотров 305. Ответов 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();
    };
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru