вторник, 17 сентября 2013 г.

AppWidget & LockScreen - за что???

Обнаружена такая вот фигня - есть AppWidget, который можно разместить на LockScreen устройства. С виджета можно открыть новость в приложении. Все было как обычно - кидаеться broadcast , его ловит reciever и открывает новость. Но!!! С лок скрина - этого не происходило. По наблюдениям в дебагере процесс запуска приложения просто замирал. Причем все необходимые флаги были установлены:
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

Пришлось делать вот такой костыль, как описано здесь: http://stackoverflow.com/questions/16188402/how-to-start-new-activity-from-lockscreen

Вставлять в приложение ProxyActivity, цель у которого - завести основной мотор всего приложения с некоторой задержкой. Кто нибудь, объясните мне : WHY???? Что это за нах??? И нет ли какого-либо способа сделать это красиво? Просто запустить Reciever который просто запустит Activity?
   

4 комментария:

  1. Как ты запускаешь активить, когда сработал onReceived?

    ОтветитьУдалить
    Ответы
    1. if(getIntent().getAction().equals(DataFields.ACTION_RUN_ARTICLE)){
      Main.runWithArticle(context, dataObj);
      }else if(getIntent().getAction().equals(DataFields.ACTION_RUN_WEATHER)){
      Main.run(context,geoID,informers)
      }

      тут Main.run статический метод, который проеряет наличия инстанса Main и если его нет, то запускает SplashScreen который его формирует. Вот сплеш запускаеться, но активность в нем просто замирает. Остаеться только layout на экране а все асинк таски уходят в onCanceled()

      Удалить
    2. асинктаски для таких случаев нельзя юзать, они зависят от жизни активити...ты вроде это прекрастно знаешь))))Я бы сделал так, создал активность как новыую таску, например как создается плеер в мобильном клиенте ВК. Но я пока не вижу полной проблемы.

      Удалить
    3. Такси юзаються в сплеше. Для взаимодействия с апи. Проблема заключается в том что на локскрине есть виджет, который показывает новости. При клика на новость в виджете должна открыться новость. Но новость не открывается. Попадаем в онкриейт, проходим пару инструкций и все. Лайоут активности на экране но сама активность больше не выполняет никаких инструкций. Это происходит только тогда, когда виджет на экране блокировки в андроиде 4.2

      Удалить