一些研究,我發現在我的情況下定時發送和接收節目播出後。我在同一個過程中有服務。
sendBroadcast(不推薦如果兩個部件在相同的工藝) 34秒
LocalBroadcastManager.getInstance(本)。sendBroadcast(意向); 接近30秒
使用AIDL和RemoteCallbackList 將工作於同一進程或不同的工藝
在服務
public final RemoteCallbackList<ICallBackAidl> mDMCallbacks = new RemoteCallbackList<ICallBackAidl>();
public void registerDMCallback(ICallBackAidl cb) {
Logger.d(LOG_TAG, "registerDMCallback " + cb);
if (cb != null)
mDMCallbacks.register(cb);
}
當你需要調用從服務應用程序/ Acitvity方法實施
public void callMehodsInApplication() {
final int N = mDMCallbacks.beginBroadcast();
for (int i = 0; i < N; i++) {
try {
mDMCallbacks.getBroadcastItem(i).method1();
} catch (RemoteException e) {
e.printStackTrace();
}
}
mDMCallbacks.finishBroadcast();
}
在你的課上ex管理應用程序或活動。
private ISyncmlServiceDMCallback mCallback = new ISyncmlServiceDMCallback.Stub() {
// Implement callback methods here
public void method1() {
// Service can call this method
}
}
public void onServiceConnected(ComponentName name, IBinder service) {
svc.LocalBinder binder = (svc.LocalBinder) service;
mSvc = binder.getService();
mSvc.registerDMCallback(mCallback);
}
調用這個方法是從廣播幾乎是瞬間,並從相同的過程
接收請問方法必須是在活動類,或者可以將它移動到一個實用工具類? – 2013-02-15 14:13:46
我想更新用戶界面,所以我認爲它必須在活動課 – 2013-02-15 14:17:09