ковыряюсь тут со своим виджетом все, даже все работает, даже поставил себе в телефон, но красоты ради хочу сделать следующее: при удалении виджета хочу остановить таймер (который запускается при создании и тикает каждую секунду, время обновляет):
public class MyClock extends AppWidgetProvider {
private Timer timer; // в этой переменной класса хочу хранить указатель на созданный таймер
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int] appWidgetIds) {
timer = new Timer();
timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000); // [COLOR=darkred]вот я его создал и задал 1-секундное обновление[/COLOR]
}
@Override
public void onDisabled(Context context) {
timer.cancel(); // [COLOR=darkred]а вот виджет удаляется; хочу остановить таймер, но в этой точке он == nil[/COLOR]
super.onDisabled(context);
}
я рисую (обновляю картинки) только тогда, когда время реально обновляется, так что особо систему не нагружаю; если ничего с таймером не делать, просто удалить виджет, то в логах можно увидеть, что андроид через какое-то время убивает мой процесс - так что вроде все ок
но если удалить виджет, потом добавить - работают 2 процесса (или хрен знает как это в андроиде правильно называется, в общем 2 экземпляра таймера работают), как-то это по ощущениям неправильно; ну собств. суть вопроса не в этом, а в том - почему timer == nil?
что-то тут я недопонимаю или с областью видимости, или с временем жизни обьекта, в ява очень слабо пока понимаю.. буду доку про таймеры пока читать..