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

TimerTask/Handler запускаются только 1 раз - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android В классе не Activity доступ к Resources http://www.cyberforum.ru/android-dev/thread1538610.html
У меня есть класс Joke, который не является activity. В MainActivity создаю экземпляр класса Joke : Joke joke = new Joke(this); А в коде самого класса Joke хочу достать строки из ресурсов private String who; ... public Joke(Context context) { who = context.getResources().getStringArray(R.array.who); ...
Программирование Android Notifications повтор Как сделать периодический повтор уведомлений(частота задается через Shared Preferences)? http://www.cyberforum.ru/android-dev/thread1538607.html
Программирование Android AlertDialog Camera SurfaceView заниженная яркость в превью
AlertDialog Camera SurfaceView заниженная яркость в превью Перенес работу с камерой в AlertDialog и получил низкую яркость изображения в превью, такое ощущение, что оно затемняется также, как и куски активити, находящиеся под диалогом. Скриншот Сами снимки имеют нормальную яркость, проблема только в превью. public class CameraDialogBuilder
Ошибка в генерации файла .apk Программирование Android
Во время генерации апк файла возниает ошибка! Как же её исправить? Вот лог ошибки: Error:A problem was found with the configuration of task ':app:packageRelease'. > File 'PasswordMaster' specified for property 'signingConfig.storeFile' does not exist. Заранее огромное спасибо!!
Программирование Android Что изучить для написание такого приложения? http://www.cyberforum.ru/android-dev/thread1538254.html
Здравствуй форум! Специалисты помогите с подбором литературы к изучению Андройд приложений. Суть приложения такова квесты только в реальном городе но с не реальными НПС видных на карте города и при помощи определения место нахождения с погрешностью 50 от нпс можно взять квест. выглядеть это должно примерно так: Если заинтересовало участие в развитии проекта, пишите в ЛС будем первыми в...
Программирование Android Ассоциировать расширение с программой (схема HTTP) имеем желание открывать файлы с некоторым расширением нашей программой. в манифесте пишем <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="file" /> <data android:host="*" /> <data android:mimeType="*/*" /> <data android:pathPattern=".*\\.myext"... подробнее

Показать сообщение отдельно
d1psy
0 / 0 / 0
Регистрация: 27.07.2015
Сообщений: 9

TimerTask/Handler запускаются только 1 раз - Программирование Android

26.09.2015, 20:22. Просмотров 200. Ответов 0
Метки (Все метки)

Мне нужно, что-бы в сервисе TimerTask или Handler работали постоянно. Но когда я запускаю программу, они срабатывают только 1 раз. Может у меня где-то ошибка? Вот мой код с использованием Handler
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
91
92
Timer timer = new Timer();
    DB2 db;
    Cursor cursor;
    Calendar x = Calendar.getInstance();
    int y = x.get(Calendar.YEAR);
    int m = x.get(Calendar.MONTH) + 1;
    int d = x.get(Calendar.DAY_OF_MONTH);
    int h = x.get(Calendar.HOUR_OF_DAY);
    int min = x.get(Calendar.MINUTE);
    int s = x.get(Calendar.SECOND);
    private Handler handler = new Handler();
    NotificationManager nm;
    int l, p, a, i, month, hours, minutes, seconds, m22, d22, v, g, t;
    int[] k = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
    private void runOnUiThread(Runnable runnable) {
        handler.post(runnable);
    }
 
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            db.open();
            cursor = db.getAllData();
            cursor.moveToFirst();
            if (cursor.moveToFirst()) {
                do {
                    int d110 = cursor.getInt(cursor.getColumnIndex("day"));
                    //Тут манипуляции с числами. При первом срабатывании Handler присылает уведомление, если выполнено условие
                    if (m22 == 0)
                        if (d22 == 0)
                            if (v == 0)
                                if (g == 0)
                                    not();
                    
                }
                while (cursor.moveToNext());//takes next item
                cursor.close();
            }
            handler.postDelayed(this, 30000);
        }
 
    };
 
 
    public void onCreate() {
        super.onCreate();
        handler.postDelayed(runnable, 30000);
        nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    }
 
 
 
 
 
    public void not() {
        Intent resultIntent = new Intent(this, TEST2.class);
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentTitle("My notification")
                        .setContentText("Hello World!");
        int mNotificationId = 001;
        NotificationManager mNotifyMgr =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        PendingIntent resultPendingIntent =
                PendingIntent.getActivity(
                        this,
                        0,
                        resultIntent,
                        PendingIntent.FLAG_UPDATE_CURRENT
                );
        mBuilder.setContentIntent(resultPendingIntent);
        mNotifyMgr.notify(mNotificationId, mBuilder.build());
    }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        handler.postDelayed(runnable, 30000);
        db = new DB2(this);
        db.open();
 
        Toast.makeText(getApplicationContext(), "Service Running ", 1).show();
        return super.onStartCommand(intent, flags, startId);
    }
 
 
    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
Вот этот-же код, только с timerTask
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
91
92
Timer timer = new Timer();
DB2 db;
Cursor cursor;
Calendar x = Calendar.getInstance();
int y = x.get(Calendar.YEAR);
int m = x.get(Calendar.MONTH) + 1;
int d = x.get(Calendar.DAY_OF_MONTH);
int h = x.get(Calendar.HOUR_OF_DAY);
int min = x.get(Calendar.MINUTE);
int s = x.get(Calendar.SECOND);
Handler handler;
NotificationManager nm;
int l, p, a, i, month, hours, minutes, seconds, m22, d22, v, g, t;
int[] k = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
class UpdateTimeTask extends TimerTask{
    public void run(){
        MS2.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                db.open();
                cursor = db.getAllData();
                cursor.moveToFirst();
                if (cursor.moveToFirst()) {
                    do {
                        int d110 = cursor.getInt(cursor.getColumnIndex("day")); //here it should do some manipulations with every item in DB.
 
                        if (m22 == 0)
                            if (d22 == 0)
                                if (v == 0)
                                    if (g == 0)
                                        not();
                    }
                    while (cursor.moveToNext());//takes next item
 
                }cursor.close();
            }
        });
        
    }
}
private void runOnUiThread(Runnable runnable) {
    handler.post(runnable);
}
 
public void onCreate() {
    super.onCreate();
    handler = new Handler();
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
 
 
 
 
 
public void not() {
    Intent resultIntent = new Intent(this, TEST2.class);
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle("My notification")
                    .setContentText("Hello World!");
    int mNotificationId = 001;
    NotificationManager mNotifyMgr =
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    PendingIntent resultPendingIntent =
            PendingIntent.getActivity(
                    this,
                    0,
                    resultIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
    mBuilder.setContentIntent(resultPendingIntent);
    mNotifyMgr.notify(mNotificationId, mBuilder.build());
}
 
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub
    db = new DB2(this);
    db.open();
    Toast.makeText(getApplicationContext(), "Service Running ", 1).show();
    timer.schedule(new UpdateTimeTask(), 0, 1000);
 
    return super.onStartCommand(intent, flags, startId);
}
 
 
@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru