【发布时间】:2015-01-04 08:29:31
【问题描述】:
我正在使用 commonsware WakefulIntentService 来做清醒的工作。
使用支持库中的commonsware library 而不是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 是文档。
- 它们之间有什么区别?
- 我应该在哪里使用 commonsware 库而不是支持 图书馆?
【问题讨论】:
-
他们解决了同样的基本问题。
WakefulBroadcastReceiver至少在理论上可以与普通的Service一起使用(小心!),因此它更加灵活。它也是 Android 支持包的一部分,您可能已经将其用于其他内容,因此它为您节省了依赖项。 OTOH,在 2008 年 4 月至 2013 年 8 月期间,WakefulBroadcastReceiver不存在,因此WakefulIntentService是主要选项。 -
@CommonsWare ,几个月前我看到你更新了库。目前,你的 lib 是否比 WakefulBroadCastReceiver 更好?
-
@CauCuKien:Rob 的回答很好地总结了差异。除此之外,我不知道您认为“更好”是什么意思。
标签: android broadcastreceiver intentservice commonsware-cwac