我正在關注Android Location Deep Dive tutorial。在代碼的一部分中,接收者是這樣註冊的。LocationManager.requestSingleUpdate
IntentFilter locIntentFilter = new
IntentFilter(SINGLE_LOCATION_UPDATE_ACTION);
context.registerReceiver(singleUpdateReceiver, locIntentFilter);
在代碼的另一部分,我們找到以下內容;
singleUpatePI = PendingIntent.getBroadcast(context, 0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
locationManager.requestSingleUpdate(criteria, singleUpatePI);
的想法是,西港島線的LocationManager火SingleUpdatePI掛起的意圖時的給定精度標準的位置是可用的。我的接收器名爲「singleUpdateReceiver」將被調用,因爲我之前註冊過它
它可以工作,但我的SingleUpdateReceiver的onReceive方法被調用兩次(!)。這會導致問題,因爲我第一次注意取消註冊。在任何調用中都沒有額外功能。
任何人都可以解釋爲什麼locationManager.requestSingleUpdate(..)會啓動兩次掛起的意圖嗎?這會導致一些問題,因爲我在接收器做的第一件事是註銷像這樣
context.unregisterReceiver(singleUpdateReceiver);
在第二invocaiton,接收器沒有被註冊,並拋出一個異常。
在Android 2.3.3上測試HTC Sensation。