我不确定我当前的方法是否是使用服务的正确方法:我想在后台监听LocalBroadcastManager(不涉及Activity)并在收到Intent时查询一些WebServices。你能不能看看我下面的代码,告诉我这是不是"好"或者"坏"关于强大的代码设计?当然,我希望将设备资源利用率降至最低。
最初,我脑子里有一个IntentService但是我没有弄清楚如何从BroadcastReceiver启动它(如果它只是监听LocalBroadcasts,你就不能在清单中注册一个BroadcastReceiver)。
public class WebRequestService extends Service {
@Override
public void onCreate() {
BroadcastReceiver mLocalMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
new getCurrentValues().execute();
}
};
IntentFilter messageFilter = new IntentFilter(Intent.ACTION_SEND);
LocalBroadcastManager.getInstance(this).registerReceiver(mLocalMessageReceiver, messageFilter);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
private class getCurrentValues extends AsyncTask<Void, Void, ResultDTO> {
@Override
protected ResultDTO doInBackground(Void... params) {
// do some magic
return resultDTO;
}
protected void onPostExecute(ResultDTO result) {
if (result != null) {
Intent messageIntent = new Intent();
messageIntent.setAction("currentValuesUpdated");
messageIntent.putExtra("result", result);
LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
}
}
} }
非常感谢