Android 不确定我是否需要一个唤醒锁

Android 不确定我是否需要一个唤醒锁,android,android-service,wakelock,Android,Android Service,Wakelock,我的应用程序有一个服务,基本上可以解析X个RSS提要。大多数提要都相当小,但有些大小可能在1MB左右。我正在我的服务中的异步任务中解析它们。解析可能相当耗时,这取决于用户的连接和提要的数量,但我认为最多不超过一两分钟。在服务中使用WakeLock是个好主意吗 到目前为止,这是我的代码。不确定这是否是设置服务的最佳方式: public class MainService extends Service { private WakeLock mWakeLock; @Ove

我的应用程序有一个服务,基本上可以解析X个RSS提要。大多数提要都相当小,但有些大小可能在1MB左右。我正在我的服务中的异步任务中解析它们。解析可能相当耗时,这取决于用户的连接和提要的数量,但我认为最多不超过一两分钟。在服务中使用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();

    }   
}

服务在后台运行,在后台没有获取wakelock的意义 但是,您可以做的是检查您的活动是否正在运行,并在该情况下获取唤醒锁,然后在活动完成时释放

在服务中使用WakeLock是个好主意吗

是的,如果让设备进入睡眠状态可能会给您带来问题。不过,我建议您使用my,因为在处理
WakeLock
对象时有许多棘手的情况。您也不需要处理自己的
AsyncTask
stopSelf()
,因为这些将由
IntentService
为您处理(从
wakefultintentservice
继承)