我正在開發一個應用程序,用於跟蹤應用程序運行時用戶在geofence中的移動。主要活動(M)啓動並綁定到GeofenceService(S),然後統計用戶在指定地理圍欄內所採取的步驟數。在應用程序kill時停止服務
我希望一旦用戶移出地理圍欄或應用程序被終止,服務就會被銷燬。要停止該服務,當應用程序被殺死了,我乾脆取消綁定服務,然後調用stopservice()
上S.
這裏去的主要活動代碼銷燬S.
public void onDestroy()
{
super.onDestroy();
Log.d(TAG, "onDestroy of main activity");
if(isGeofenceBound){
Log.d(TAG, "unbinding geofence service");
unbindService(mGeofenceConnection);
isGeofenceBound = false;
}
stopService(new Intent(getApplicationContext(), GeofenceService.class));
Log.d(TAG, "after calling stop service on geofenceservice in main activity");
}
這裏那張onDestroy()
S.
public void onDestroy(){
if(mBound){
unbindService(mStepConnection);
mBound = false;
}
stopPedometerService();
googleApiClient.disconnect();
Log.d(TAG, "before super onDestroy of geofence service");
stopSelf();
super.onDestroy();
Log.d(TAG, "After super onDestroy of geofence service");
}
而這裏的服務
<service android:name=".geofencing.GeofenceService"
android:stopWithTask="true"/>
清單代碼210
從android最近列表中清除應用程序後,我得到了android studio monitor中上面代碼中提到的所有日誌語句,但是該服務似乎保持活動狀態,因爲在應用程序重新啓動時,其變量狀態從最後開始。
「它的變量狀態是從最後一次開始保存的」 - 什麼變量狀態?這些變量在哪裏申報?他們是常規字段還是「靜態」字段? – CommonsWare
變量在Geofence服務中聲明。它們是靜態變量。 – forcehandler
我注意到,當我關閉應用程序而不啓動Geofence'服務'時,主要活動並沒有調用它的'onDestroy()'方法,但是當啓動後應用程序關閉時,onDestroy()服務。 – forcehandler