forked from organicmaps/organicmaps
[android] Migrated MwmJobIntentService.java to MwmWork (#4691)
* [android] Code refactored for OsmUploadWork Signed-off-by: suman <suman.arun@anywhere.co>
This commit is contained in:
parent
9ab1dc340e
commit
3e37178b03
6 changed files with 63 additions and 108 deletions
|
@ -719,10 +719,6 @@
|
|||
<activity
|
||||
android:name="app.organicmaps.settings.DrivingOptionsActivity"
|
||||
android:label="@string/driving_options_title"/>
|
||||
<service
|
||||
android:name="app.organicmaps.background.OsmUploadService"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"
|
||||
android:exported="false"/>
|
||||
|
||||
<!-- Catches app upgraded intent -->
|
||||
<receiver
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
package app.organicmaps;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.JobIntentService;
|
||||
import app.organicmaps.util.CrashlyticsUtils;
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/4531
|
||||
public abstract class MwmJobIntentService extends JobIntentService
|
||||
{
|
||||
private static final String TAG = MwmJobIntentService.class.getSimpleName();
|
||||
|
||||
@NonNull
|
||||
protected String getTag()
|
||||
{
|
||||
return getClass().getSimpleName();
|
||||
}
|
||||
|
||||
protected abstract void onHandleWorkInitialized(@NonNull Intent intent);
|
||||
|
||||
@Override
|
||||
protected void onHandleWork(@NonNull Intent intent)
|
||||
{
|
||||
MwmApplication app = MwmApplication.from(this);
|
||||
String msg = "onHandleWork: " + intent;
|
||||
Logger.i(TAG, msg);
|
||||
CrashlyticsUtils.INSTANCE.log(Log.INFO, getTag(), msg);
|
||||
if (!app.arePlatformAndCoreInitialized())
|
||||
{
|
||||
Logger.w(TAG, "Application is not initialized, ignoring " + intent);
|
||||
return;
|
||||
}
|
||||
|
||||
onHandleWorkInitialized(intent);
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package app.organicmaps.background;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.JobIntentService;
|
||||
|
||||
import app.organicmaps.MwmJobIntentService;
|
||||
import app.organicmaps.editor.Editor;
|
||||
import app.organicmaps.scheduling.JobIdMap;
|
||||
|
||||
public class OsmUploadService extends MwmJobIntentService
|
||||
{
|
||||
/**
|
||||
* Starts this service to upload map edits to osm servers.
|
||||
*/
|
||||
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/4531
|
||||
public static void startActionUploadOsmChanges(@NonNull Context context)
|
||||
{
|
||||
final Intent intent = new Intent(context, OsmUploadService.class);
|
||||
JobIntentService.enqueueWork(context.getApplicationContext(), OsmUploadService.class,
|
||||
JobIdMap.getId(OsmUploadService.class), intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onHandleWorkInitialized(@NonNull Intent intent)
|
||||
{
|
||||
final Context context = getApplicationContext();
|
||||
Editor.uploadChanges(context);
|
||||
}
|
||||
}
|
61
android/src/app/organicmaps/background/OsmUploadWork.java
Normal file
61
android/src/app/organicmaps/background/OsmUploadWork.java
Normal file
|
@ -0,0 +1,61 @@
|
|||
package app.organicmaps.background;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.work.Constraints;
|
||||
import androidx.work.NetworkType;
|
||||
import androidx.work.OneTimeWorkRequest;
|
||||
import androidx.work.WorkManager;
|
||||
import androidx.work.WorkRequest;
|
||||
import androidx.work.Worker;
|
||||
import androidx.work.WorkerParameters;
|
||||
import app.organicmaps.MwmApplication;
|
||||
import app.organicmaps.editor.Editor;
|
||||
import app.organicmaps.editor.OsmOAuth;
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
public class OsmUploadWork extends Worker
|
||||
{
|
||||
|
||||
private static final String TAG = OsmUploadWork.class.getSimpleName();
|
||||
private final Context mContext;
|
||||
private final WorkerParameters mWorkerParameters;
|
||||
|
||||
public OsmUploadWork(@NonNull Context context, @NonNull WorkerParameters workerParams)
|
||||
{
|
||||
super(context, workerParams);
|
||||
this.mContext = context;
|
||||
this.mWorkerParameters = workerParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts this worker to upload map edits to osm servers.
|
||||
*/
|
||||
public static void startActionUploadOsmChanges(@NonNull Context context)
|
||||
{
|
||||
if (Editor.nativeHasSomethingToUpload() && OsmOAuth.isAuthorized(context))
|
||||
{
|
||||
final Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED)
|
||||
.setRequiresCharging(true)
|
||||
.build();
|
||||
final WorkRequest workReq = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(constraints)
|
||||
.build();
|
||||
WorkManager.getInstance(context).enqueue(workReq);
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Result doWork()
|
||||
{
|
||||
final MwmApplication app = MwmApplication.from(mContext);
|
||||
if (!app.arePlatformAndCoreInitialized())
|
||||
{
|
||||
Logger.w(TAG, "Application is not initialized, ignoring " + mWorkerParameters);
|
||||
return Result.failure();
|
||||
}
|
||||
Editor.uploadChanges(mContext);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
|
@ -11,7 +11,7 @@ import app.organicmaps.BuildConfig;
|
|||
import app.organicmaps.Framework;
|
||||
import app.organicmaps.MwmApplication;
|
||||
import app.organicmaps.background.AppBackgroundTracker;
|
||||
import app.organicmaps.background.OsmUploadService;
|
||||
import app.organicmaps.background.OsmUploadWork;
|
||||
import app.organicmaps.bookmarks.data.Metadata;
|
||||
import app.organicmaps.editor.data.FeatureCategory;
|
||||
import app.organicmaps.editor.data.Language;
|
||||
|
@ -207,7 +207,7 @@ public final class Editor
|
|||
if (foreground)
|
||||
return;
|
||||
|
||||
OsmUploadService.startActionUploadOsmChanges(mContext);
|
||||
OsmUploadWork.startActionUploadOsmChanges(mContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
package app.organicmaps.scheduling;
|
||||
|
||||
import app.organicmaps.background.OsmUploadService;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class JobIdMap
|
||||
{
|
||||
private static final Map<Class<?>, Integer> MAP = new HashMap<>();
|
||||
|
||||
static {
|
||||
MAP.put(OsmUploadService.class, calcIdentifier(MAP.size()));
|
||||
}
|
||||
|
||||
private static final int ID_BASIC = 1070;
|
||||
private static final int JOB_TYPE_SHIFTS = 12;
|
||||
|
||||
private static int calcIdentifier(int count)
|
||||
{
|
||||
return (count + 1 << JOB_TYPE_SHIFTS) + ID_BASIC;
|
||||
}
|
||||
|
||||
public static int getId(Class<?> clazz)
|
||||
{
|
||||
Integer integer = MAP.get(clazz);
|
||||
if (integer == null)
|
||||
throw new IllegalArgumentException("Value not found for args : " + clazz);
|
||||
return integer;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue