У меня есть служба для моего приложения, которая в основном анализирует 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();
}
}