支持库中的 WakefulBroadcastReceiver 与 commonsware 的 cwac-wakeful
WakefulBroadcastReceiver in support library vs cwac-wakeful by commonsware
我正在使用通用软件 WakefulIntentService
进行唤醒工作。
与使用支持库中的 commonsware library instead of WakefulBroadcastReceiver
相比有什么优势吗?
这是我使用支持库的代码
import android.support.v4.content.WakefulBroadcastReceiver;
public class SimpleWakefulReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// This is the Intent to deliver to our service.
Intent service = new Intent(context, SimpleWakefulService.class);
// Start the service, keeping the device awake while it is launching.
Log.i("SimpleWakefulReceiver", "Starting service @ " + SystemClock.elapsedRealtime());
startWakefulService(context, service);
}
}
public class SimpleWakefulService extends IntentService {
public SimpleWakefulService() {
super("SimpleWakefulService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.i("SimpleWakefulReceiver", "Completed service @ " + SystemClock.elapsedRealtime());
SimpleWakefulReceiver.completeWakefulIntent(intent);
}
}
This 是文档。
- 它们有什么区别?
- 我应该在哪里使用公共软件库而不是支持
图书馆?
他们几乎是一样的。
支持库的 WakefulBroadcastReceiver
采用部分唤醒锁,将锁 ID 作为额外内容放在 Intent
中,您应该将其提供给必须调用的 IntentService
completeWakefulIntent ()
当您完成处理时。所以获取和释放是在不同的地方完成的,有点代码味。
CommonsWare 的 WakefulIntentService
自己获取和释放部分唤醒锁。
如果您同意获取和释放应该在同一个地方完成,您可以将常规 BroadcastReceiver
与 WakefulIntentService
结合使用。
如果您不太介意并且认为使用知名库更重要,这样新开发人员(或一年后的您)不必(重新)学习新东西,那么请使用支持图书馆。
更新
此外:在 WakefulBroadcastReceiver
的文档中,它警告可能会被中断并丢失唤醒锁。您需要在 IntentService
中获取自己的唤醒锁以防止这种情况发生。使用 CommonsWare,您只需依靠它即可重新获取锁。
我正在使用通用软件 WakefulIntentService
进行唤醒工作。
与使用支持库中的 commonsware library instead of WakefulBroadcastReceiver
相比有什么优势吗?
这是我使用支持库的代码
import android.support.v4.content.WakefulBroadcastReceiver;
public class SimpleWakefulReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// This is the Intent to deliver to our service.
Intent service = new Intent(context, SimpleWakefulService.class);
// Start the service, keeping the device awake while it is launching.
Log.i("SimpleWakefulReceiver", "Starting service @ " + SystemClock.elapsedRealtime());
startWakefulService(context, service);
}
}
public class SimpleWakefulService extends IntentService {
public SimpleWakefulService() {
super("SimpleWakefulService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.i("SimpleWakefulReceiver", "Completed service @ " + SystemClock.elapsedRealtime());
SimpleWakefulReceiver.completeWakefulIntent(intent);
}
}
This 是文档。
- 它们有什么区别?
- 我应该在哪里使用公共软件库而不是支持 图书馆?
他们几乎是一样的。
支持库的 WakefulBroadcastReceiver
采用部分唤醒锁,将锁 ID 作为额外内容放在 Intent
中,您应该将其提供给必须调用的 IntentService
completeWakefulIntent ()
当您完成处理时。所以获取和释放是在不同的地方完成的,有点代码味。
CommonsWare 的 WakefulIntentService
自己获取和释放部分唤醒锁。
如果您同意获取和释放应该在同一个地方完成,您可以将常规 BroadcastReceiver
与 WakefulIntentService
结合使用。
如果您不太介意并且认为使用知名库更重要,这样新开发人员(或一年后的您)不必(重新)学习新东西,那么请使用支持图书馆。
更新
此外:在 WakefulBroadcastReceiver
的文档中,它警告可能会被中断并丢失唤醒锁。您需要在 IntentService
中获取自己的唤醒锁以防止这种情况发生。使用 CommonsWare,您只需依靠它即可重新获取锁。