2013-10-07 2 views
1

Я хочу написать какое-то фоновое-живое приложение для спортивных веб-сервисов ... Я бы хотел, чтобы мое приложение постоянно вызывало TIME_TICK.BroadcastReceiver (TIME_TICK) умирает каждую ночь?

Btw: Я также пытался использовать AlarmManager, но проблема такая же.

Но теперь моя проблема ...

Я использую приемник с службой для выполнения части. Приемник вызывается каждую минуту после регистрации. Но каждую ночь служба прекращается и больше никогда не будет вызвана.

На Android 2.x все работает нормально, но Android 4.x будет останавливать приемник каждый день ... Есть ли возможность сохранить приложение на Android 4.x?

Reveiver зарегистрирован в моем Main-активность:

registerReceiver(new MyReceiver(), new IntentFilter(Intent.ACTION_TIME_TICK)); 

Manifest-записей:

<service android:name="de.pepdev.MyService" /> 
<receiver android:name="de.pepdev.MyReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.TIME_TICK" /> 
    </intent-filter> 
</receiver> 

Приемник-класс:

public class MyReceiver extends BroadcastReceiver 
{ 
    public static long  nextExecTime = 0; 
    public static Calendar currentTime  = Calendar.getInstance(); 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     currentTime = Calendar.getInstance(); 

     if(nextExecTime <= currentTime.getTimeInMillis()) 
     { 
      Intent service = new Intent(context, MyService.class); 
      context.startService(service); 
     } 
    } 
} 
+0

Можете ли вы разместить журналы здесь? Вы знаете, почему услуга прекращается? –

+0

спасибо за помощь, но журналы ничего не говорят. услуга вызывается на пару раз, а ночью logcat не имеет никаких дополнительных записей в моем приложении. последний цикл завершился успешно. также системные сообщения, такие как alarmmanage, не бросали ничего. – user2854483

ответ

0

Я также попытался использовать AlarmManager, но проблема та же

AlarmManager гораздо лучше ответ, чем ACTION_TIME_TICK, особенно если вы позволить пользователю настроить частоту опроса (в том числе вариант «никогда не опросить, пожалуйста, поскольку мне нравится, когда моя батарея и использование полосы пропускания остаются на низком уровне»).

Пожалуйста, не стесняйтесь спросить отдельный вопрос StackOverflow о любых проблемах, с которыми вы чувствуете, испытывая с ним.

Но каждую ночь служба прекращается, и никогда не будет называться снова

Android может и завершать ваш процесс в любой момент, либо по запросу пользователя или из-за старости.

Manifest-записи:

<receiver> бессмысленно, так как you cannot register for ACTION_TIME_TICK via the manifest.

+0

Спасибо. Я думаю, что AlarmManager лучше. Я хочу, чтобы пользователь настраивал, в какое время приложение должно работать в фоновом режиме.Но есть ли возможность сохранить приложение в живых и избежать того, чтобы андроид его прекратил? – user2854483

+0

@ user2854483: Сохранение процесса - это анти-шаблон на Android. Пожалуйста, используйте 'AlarmManager' и разрешите вашему процессу уходить между проверками в пользовательский период опроса. – CommonsWare

+0

Идея состоит в том, что пользователь настраивает, например. некоторые диапазоны времени для футбольных матчей других гонок, которые лежат несколько дней в будущем. и я хотел бы запустить фоновый процесс автоматически. но после более чем 24 часов приложение «мертво», и приемник не пойман. это нормально для меня, чтобы приложение спало или остановилось, но нет ли возможности «реанимировать» приложение? – user2854483

Смежные вопросы