Как выполнять несколько задач одну за другой с JobIntentService - PullRequest
1 голос
/ 17 января 2020

Я хочу добавить задачи к JobIntentService queue, в настоящее время я создал JobIntentService, который работает правильно для одной задачи, но когда я вызываю enqueueWork до завершения existing service, он не работает.

Ниже мой JobIntentService

public class SaveImageService extends JobIntentService {

    private String TAG = "SaveImageService";
    private int textureViewDefaultHeight =1100;
    static final int JOB_ID = 1101;
    private static Context mContext;
    private ResultReceiver mResultReceiver;
    public static final int SHOW_RESULT = 57;
    public static final String RECEIVERstr = "receiver";

    public static void enqueueWork(Context context, Intent work, SaveImageReceiver saveImageReceiver) {
        mContext = context;
        Intent intent = work;
        intent.putExtra(RECEIVERstr, saveImageReceiver);
        enqueueWork(context, SaveImageService.class, JOB_ID, intent);
   }

    @Override
    protected void onHandleWork(@NonNull Intent intent) {
        Log.e(TAG, "** onHandleWork");

    if (intent.hasExtra("fileUri")) {

        mResultReceiver = intent.getParcelableExtra(RECEIVERstr);
        Log.e(TAG, "** onHandleWork if has extra");
        Uri oldUri = intent.getParcelableExtra("fileUri");
        int textureViewHeight = intent.getIntExtra("textureViewHeight",textureViewDefaultHeight);
        Uri tempUri = getBitmapForBatch(oldUri,textureViewHeight);

        if(tempUri!=null){
            Log.e(TAG, "** if(tempUri!=null){");
            Bundle bundle = new Bundle();
            bundle.putParcelable("ResultUri", tempUri);
            if (mResultReceiver != null) {
                Log.e(TAG, "** onHandleWork mResultReceiver not null");
                mResultReceiver.send(SHOW_RESULT, bundle);
            } else
                Log.e(TAG, "** onHandleWork mResultReceiver isss null");
        }else
            Log.e(TAG, "** else (tempUri!=null){");
    }else{
        Log.e(TAG, "** onHandleWork else uri not get");
    }
}
 }

, и я запускаю его каждый раз, когда пользователь нажимает на фотографию

Intent mIntent = new Intent(context, SaveImageService.class);
                            mIntent.putExtra("fileUri", fileUri);
                            mIntent.putExtra("textureViewHeight", textureView.getHeight());
                            SaveImageService.enqueueWork(context, mIntent, mSaveImageReceiver);

Заранее благодарен за помощь.

...