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