Не уверен, что мне нужен WakeLock здесь - PullRequest
2 голосов
/ 19 марта 2012

У меня есть служба для моего приложения, которая в основном анализирует X-количество RSS-каналов. Большинство каналов довольно маленькие, но некоторые могут быть размером около 1 МБ. Я анализирую их в AsyncTask на моем сервисе. Разбор может занимать довольно много времени в зависимости от подключения пользователя и количества каналов, но я бы сказал, что не более минуты или двух максимум. Хорошо ли использовать WakeLock в сервисе?

Пока это мой код. Не уверен, что это лучший способ настроить службу:

public class MainService extends Service  
{   
    private WakeLock mWakeLock;

    @Override
    public void onCreate()
    {       
        handleIntent();
    }

    @Override
   public int onStartCommand(final Intent intent, final int flags, final int startId)
    {
       return START_STICKY;
    }

   @Override 
   public void onStart(final Intent intent, final int startId) { 
       handleIntent(); 
   }

    protected void handleIntent() 
    {
        // obtain the wake lock 
        final PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE); 
        mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
        mWakeLock.acquire();

        if (!((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE)).getBackgroundDataSetting()) 
        { 
            stopSelf();
            return;
        }

        new AsyncParsingTask().execute();
    }

    @Override
    public void onDestroy() 
    {
        super.onDestroy();

        mWakeLock.release();

    }   
}

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Является ли хорошей идеей использовать WakeLock в службе?

Да, если устройство может заснуть, это может стать для вас проблемой.Тем не менее, я бы порекомендовал вам использовать мой WakefulIntentService, поскольку при работе с WakeLock объектами существует множество сложных случаев.Вам также не нужно связываться с вашими AsyncTask или stopSelf(), так как они будут обрабатываться для вас IntentService (от которого наследуется WakefulIntentService).

0 голосов
/ 19 марта 2012

Служба работает в фоновом режиме, там нет смысла приобретать wakelock, однако вы можете проверить, работает ли ваша активность, и в этом состоянии получить блокировку и активировать wake по окончании активности

...