基本的にX個のRSSフィードを解析するアプリ用のサービスがあります。ほとんどのフィードはかなり小さいですが、サイズが約 1MB のものもあります。サービスの AsyncTask でそれらを解析しています。ユーザーの接続とフィードの数によっては、解析にかなり時間がかかる場合がありますが、せいぜい 1 ~ 2 分程度です。サービスで 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();
}
}