JobScheduler未按预期工作

时间:2017-12-23 18:10:19

标签: java android android-jobscheduler

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

0 个答案:

没有答案