ActivityManager杀死jobScheduler几个小时,然后它再次开始工作。它一直在发生。我无法弄清楚这里的问题。这项工作被杀了3-4个小时,然后再次开始工作。请查看下面的代码和错误日志。它在棉花糖中比在牛轧糖中发生的更多。三江源
主要活动
if (jobScheduler == null) {
jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
ComponentName jobService =
new ComponentName(getPackageName(), MyJobService.class.getName());
JobInfo jobInfo
= new JobInfo.Builder(MYJOBID, jobService).setPeriodic(15 * 60 * 1000L)
.setRequiresDeviceIdle(false)
.build();
int jobId = jobScheduler.schedule(jobInfo);
if (jobScheduler.schedule(jobInfo) > 0) {
} else {
Toast.makeText(LiveTrack.this,
"Please report " + jobId,
Toast.LENGTH_SHORT).show();
}
}
MyJobService类
@Override
public boolean onStartJob(JobParameters jobParameters) {
Log.e("onStartJob", "onStartJob");
jobP = jobParameters;
if (!checkAndRequestPermissions()) {
} else {
if(mLocationRequest == null){
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(100 * 1000);
mLocationRequest.setFastestInterval(60 * 1000);
}
if (client == null) {
client = LocationServices.getFusedLocationProviderClient(this);
client.requestLocationUpdates(mLocationRequest, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
onLocationChanged(locationResult.getLastLocation());
}
},
Looper.myLooper());
}
saveToStorageWithGPSInterval();
}
return true;
}
public void saveToStorageWithGPSInterval() {
if (isOnline()) {
saveDataIfFileExitsWhenOnlineMethod();
}
}
public void saveDataIfFileExitsWhenOnlineMethod() {
new UploadLocation(MyJobService.this,userId,latitude,longitude,batteryPercentage+"",date,gpsProvider,velocity){
@Override
protected void onPostExecute(Boolean success) {
super.onPostExecute(success);
jobFinished(jobP, !success);
}
}.execute();
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
Log.e("onStopJob", "onStopJob");
new UploadLocation(MyJobService.this,userId,latitude,longitude,batteryPercentage+"",date,gpsProvider,velocity).cancel(true);
return true;
}
上传课程
public UploadLocation(Context context, String userId, String latitude, String longitude, String batteryPercentage,
String date, String gpsProvider,int velocity) {
mApplicationContext = context.getApplicationContext();
this.userId = userId;
this.latitude = latitude;
this.longitude = longitude;
this.batteryPercentage = batteryPercentage;
this.date = date;
this.gpsProvider = gpsProvider;
this.velocity = velocity;
}
@Override
protected Boolean doInBackground(Void... params) {
URL url;
String response = "";
try {
url = new URL(url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(20000);
conn.setConnectTimeout(100000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
HashMap<String, String> h1 = new HashMap<String, String>();
h1.put("lat", latitude + "");
h1.put(" ", batteryPercentage + "");
h1.put("date_time", date);
h1.put("altitude", "9999");
h1.put("long", longitude + "");
h1.put("velocity", "9999x");
h1.put("userid", userId + "");
writer.write(getPostDataString(h1));
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = br.readLine()) != null) {
response += line;
}
if (response != null && response != "") {
JSONObject jsonResponse = new JSONObject(response.toString());
status = jsonResponse.getString("success");
String message = jsonResponse.getString("message");
} else {
}
}
} catch (Exception e) {
return false;
}
return true;
}
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
错误日志:
12-22 22:38:16.345 2628-2652/? I/ActivityManager: Killing 15537:com.zzz.com.jobschedulers/u0a883 (adj 15): DHA:empty #33
12-22 22:38:16.375 2628-3012/? D/ActivityManager: removeProcessNameLocked mProcessNames.remove pid=15537 ,hash=37676466 ,name=com.zzz.com.jobschedulers
12-22 22:38:16.375 2628-3010/? I/AppOps: sendInfoToFLP, code=41 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=finishOp
12-22 22:38:16.375 2628-3014/? I/AppOps: sendInfoToFLP, code=42 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=finishOp
12-22 22:45:08.675 2628-2628/? D/MountService: getExternalStorageMountMode : final mountMode=1, uid : 10883, packageName : com.zzz.com.jobschedulers
12-22 22:45:08.695 2628-2628/? I/ActivityManager: Start proc 16965:com.zzz.com.jobschedulers/u0a883 for service com.zzz.com.jobschedulers/.MyJobService
12-22 22:45:08.725 16965-16965/? W/SELinux: SELinux: seapp_context_lookup: seinfo=default, level=s0:c512,c768, pkgname=com.zzz.com.jobschedulers
12-22 22:45:08.925 16965-16965/? W/ResourcesManager: Resource getTopLevelResources for package com.zzz.com.jobschedulersoverlayDirs =Null
12-22 22:45:08.945 16965-16965/? W/System: ClassLoader referenced unknown path: /data/app/com.zzz.com.jobschedulers-1/lib/arm
12-22 22:45:09.065 2628-3020/? I/AppOps: sendInfoToFLP, code=41 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=startOp
12-22 22:45:09.065 2628-2955/? I/AppOps: sendInfoToFLP, code=42 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=startOp
12-22 22:56:22.956 27906-28209/? D/omnistore_android_logger: TransactionReceiver::processSerializedJobSuccess for queue messenger_contacts_android:100000598003030_amIlrrMmonmpI, status 0, global id 8904
12-22 23:05:57.586 2628-2652/? I/ActivityManager: Killing 16965:com.zzz.com.jobschedulers/u0a883 (adj 15): DHA:empty #33
12-22 23:05:57.626 2628-3008/? D/ActivityManager: removeProcessNameLocked mProcessNames.remove pid=16965 ,hash=260543439 ,name=com.zzz.com.jobschedulers
12-22 23:05:57.636 2628-3014/? I/AppOps: sendInfoToFLP, code=41 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=finishOp
12-22 23:05:57.646 2628-2958/? I/AppOps: sendInfoToFLP, code=42 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=finishOp
12-22 23:11:30.726 2628-2628/? D/MountService: getExternalStorageMountMode : final mountMode=1, uid : 10883, packageName : com.zzz.com.jobschedulers
12-22 23:11:30.736 2628-2628/? I/ActivityManager: Start proc 18767:com.zzz.com.jobschedulers/u0a883 for service com.zzz.com.jobschedulers/.MyJobService
12-22 23:11:30.746 18767-18767/? W/SELinux: SELinux: seapp_context_lookup: seinfo=default, level=s0:c512,c768, pkgname=com.zzz.com.jobschedulers
12-22 23:11:30.836 18767-18767/? W/ResourcesManager: Resource getTopLevelResources for package com.zzz.com.jobschedulersoverlayDirs =Null
12-22 23:11:30.856 18767-18767/? W/System: ClassLoader referenced unknown path: /data/app/com.zzz.com.jobschedulers-1/lib/arm
12-22 23:11:31.046 2628-3012/? I/AppOps: sendInfoToFLP, code=41 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=startOp
12-22 23:11:31.046 2628-3008/? I/AppOps: sendInfoToFLP, code=42 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=startOp
12-22 23:16:31.116 2628-3014/? I/AppOps: sendInfoToFLP, code=41 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=startOp
12-22 23:16:31.116 2628-3008/? I/AppOps: sendInfoToFLP, code=42 , uid=10883 , packageName=com.zzz.com.jobschedulers , type=startOp