0
我有點困惑。我想使用服務來註冊內容觀察者並阻止它停止。我應該在onCreate還是onStartCommand中註冊contentObserver?換言之,這些碼中的一個爲真:Android中的onStartCommand的真實用法
private ContentObserver smsObserver;
public void onCreate() {
super.onCreate();
smsObserver = new ObserverSms(getApplicationContext());
getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, smsObserver);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
或
private ContentObserver smsObserver;
@Override
public void onCreate() {
super.onCreate();
smsObserver = new ObserverSms(getApplicationContext());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, smsObserver);
return START_STICKY;
}
或在onStart()?
每次使用onStartCommand打開頁面時,是否再次執行onCreate或onStart? 並且不在「return START_STICKY;」中返回導致在第二個代碼中停止contentObserver?
我不理解你。最後哪一個是正確的或更好的?我想永遠運行觀察者(直到用戶禁用它)。現在當我使用Observer時,過了一會兒觀察者放慢了電話。 – user3879722 2015-03-17 16:23:36
我應該在哪裏註冊和取消註冊觀察者? – user3879722 2015-03-17 17:35:16
我建議你在onStartCommand中註冊它,並在onDestroy中註銷它。但請記住,如果不僅有一個startService,則要處理多個onStartCommand。不要註冊兩次。 – 2015-03-21 05:35:53