我創建了一個位置跟蹤應用程序,每次更改位置時都會寫入本地SQLite數據庫。 該應用不幸在跟蹤時約7-8小時後崩潰,不幸的是,當我將設備連接到調試器時不會發生這種情況,所以沒有我可以附加的日誌。 一些更多的可能有用的信息:Android位置跟蹤器在很長一段時間後崩潰
- 該應用程序將其從後臺喚醒之前崩潰(可以看出,顯然是在跟蹤的數據),所以我可以從其他應用程序
- 試圖寫入排除這個bug到TEXTFILES,而不是沒有任何成功的數據庫(剛跑崩潰前約3小時)
- 更改追蹤間隔(5S正常最快1秒間隔):同樣的結果的應用程序崩潰也7-8小時
這裏有後一些代碼片段:
位置變化事件
@Override
public void onLocationChanged(Location location) {
if(location == null){
location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(location == null) {
return;
}
}
Log.d(TAG, location.toString());
double currentLatitude = location.getLatitude();
double currentLongitude = location.getLongitude();
ActivitylogRepo activityRepo = new ActivitylogRepo(this);
Activitylog activity = new Activitylog();
activity.activity = "Position";
activity.timestamp = getDateTime();
activity.value2 = String.valueOf(currentLatitude);
activity.value3 = String.valueOf(currentLongitude);
activityRepo.insert(activity);
}
數據庫插入命令
public int insert(Activitylog activitylog) {
//Open connection to write data
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Activitylog.KEY_activity, activitylog.activity);
values.put(Activitylog.KEY_timestamp, activitylog.timestamp);
values.put(Activitylog.KEY_value1, activitylog.value1);
values.put(Activitylog.KEY_value2, activitylog.value2);
values.put(Activitylog.KEY_value3, activitylog.value3);
values.put(Activitylog.KEY_value4, activitylog.value4);
// Inserting Row
long activitylog_id = db.insert(Activitylog.TABLE, null, values);
db.close(); // Closing database connection
return (int) activitylog_id;
}
初始化服務
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(20 * 1000) // 20s in ms
.setFastestInterval(5 * 1000); // 5s in ms
可以請您發佈崩潰日誌? –
正如我上面提到的那樣,在使用調試器時從未出現錯誤,我忘了補充說,連接到Android Studio時也不會發生。 –