fix: Fix wakelock being acquired but not released
Based one427f3b701and6c353dd4fc. Also bump version.
This commit is contained in:
		
							parent
							
								
									90d11e3191
								
							
						
					
					
						commit
						b388904ebb
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
name: moxplatform
 | 
					name: moxplatform
 | 
				
			||||||
description: Moxxy platform-specific code
 | 
					description: Moxxy platform-specific code
 | 
				
			||||||
version: 0.1.10
 | 
					version: 0.1.11
 | 
				
			||||||
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					publish_to: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
@ -21,10 +21,10 @@ dependencies:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  moxplatform_android:
 | 
					  moxplatform_android:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
    version: 0.1.10
 | 
					    version: 0.1.11
 | 
				
			||||||
  moxplatform_platform_interface:
 | 
					  moxplatform_platform_interface:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
    version: 0.1.10
 | 
					    version: 0.1.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  moxlib:
 | 
					  moxlib:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,7 @@ import io.flutter.view.FlutterCallbackInformation;
 | 
				
			|||||||
import io.flutter.view.FlutterMain;
 | 
					import io.flutter.view.FlutterMain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class BackgroundService extends Service implements MethodChannel.MethodCallHandler {
 | 
					public class BackgroundService extends Service implements MethodChannel.MethodCallHandler {
 | 
				
			||||||
    private static String TAG = "BackgroundService";
 | 
					    private static final String TAG = "BackgroundService";
 | 
				
			||||||
    private static final String manuallyStoppedKey = "manually_stopped";
 | 
					    private static final String manuallyStoppedKey = "manually_stopped";
 | 
				
			||||||
    private static final String backgroundMethodChannelKey = MoxplatformAndroidPlugin.methodChannelKey + "_bg";
 | 
					    private static final String backgroundMethodChannelKey = MoxplatformAndroidPlugin.methodChannelKey + "_bg";
 | 
				
			||||||
    /// The [FlutterEngine] executing the background service
 | 
					    /// The [FlutterEngine] executing the background service
 | 
				
			||||||
@ -48,12 +48,12 @@ public class BackgroundService extends Service implements MethodChannel.MethodCa
 | 
				
			|||||||
    private AtomicBoolean isRunning = new AtomicBoolean(false);
 | 
					    private AtomicBoolean isRunning = new AtomicBoolean(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String WAKE_LOCK_NAME = BackgroundService.class.getName() + ".Lock";
 | 
					    private static final String WAKE_LOCK_NAME = BackgroundService.class.getName() + ".Lock";
 | 
				
			||||||
    private static volatile PowerManager.WakeLock wakeLock = null;
 | 
					    public static volatile PowerManager.WakeLock wakeLock = null;
 | 
				
			||||||
    /// Notification data
 | 
					    /// Notification data
 | 
				
			||||||
    private String notificationBody = "Preparing...";
 | 
					    private String notificationBody = "Preparing...";
 | 
				
			||||||
    private static final String notificationTitle = "Moxxy";
 | 
					    private static final String notificationTitle = "Moxxy";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    synchronized private static PowerManager.WakeLock getLock(Context context) {
 | 
					    synchronized public static PowerManager.WakeLock getLock(Context context) {
 | 
				
			||||||
        if (wakeLock == null) {
 | 
					        if (wakeLock == null) {
 | 
				
			||||||
            PowerManager mgr = (PowerManager) context
 | 
					            PowerManager mgr = (PowerManager) context
 | 
				
			||||||
                    .getSystemService(Context.POWER_SERVICE);
 | 
					                    .getSystemService(Context.POWER_SERVICE);
 | 
				
			||||||
@ -137,6 +137,13 @@ public class BackgroundService extends Service implements MethodChannel.MethodCa
 | 
				
			|||||||
        try {
 | 
					        try {
 | 
				
			||||||
            if (isRunning.get() || (engine != null && !engine.getDartExecutor().isExecutingDart())) return;
 | 
					            if (isRunning.get() || (engine != null && !engine.getDartExecutor().isExecutingDart())) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    if (wakeLock == null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Log.d(TAG, "Wakelock is null. Acquiring it...");
 | 
				
			||||||
 | 
							getLock(getApplicationContext()).acquire(MoxplatformConstants.WAKE_LOCK_DURATION);
 | 
				
			||||||
 | 
							Log.d(TAG, "Wakelock acquired...");
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						    
 | 
				
			||||||
            updateNotificationInfo();
 | 
					            updateNotificationInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Initialize Flutter if it's not already
 | 
					            // Initialize Flutter if it's not already
 | 
				
			||||||
@ -176,6 +183,13 @@ public class BackgroundService extends Service implements MethodChannel.MethodCa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
 | 
					    public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
 | 
				
			||||||
 | 
						if (wakeLock != null) {
 | 
				
			||||||
 | 
						    Log.d(TAG, "Wakelock is not null. Releasing it...");
 | 
				
			||||||
 | 
						    wakeLock.release();
 | 
				
			||||||
 | 
						    wakeLock = null;
 | 
				
			||||||
 | 
						    Log.d(TAG, "Wakelock released...");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (call.method) {
 | 
					        switch (call.method) {
 | 
				
			||||||
            case "getHandler":
 | 
					            case "getHandler":
 | 
				
			||||||
                result.success(MoxplatformAndroidPlugin.getHandle(this));
 | 
					                result.success(MoxplatformAndroidPlugin.getHandle(this));
 | 
				
			||||||
@ -255,7 +269,6 @@ public class BackgroundService extends Service implements MethodChannel.MethodCa
 | 
				
			|||||||
        setManuallyStopped(this,false);
 | 
					        setManuallyStopped(this,false);
 | 
				
			||||||
        enqueue(this);
 | 
					        enqueue(this);
 | 
				
			||||||
        runService();
 | 
					        runService();
 | 
				
			||||||
        getLock(getApplicationContext()).acquire();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return START_STICKY;
 | 
					        return START_STICKY;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -4,15 +4,24 @@ package me.polynom.moxplatform_android;
 | 
				
			|||||||
import android.content.BroadcastReceiver;
 | 
					import android.content.BroadcastReceiver;
 | 
				
			||||||
import android.content.Context;
 | 
					import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
 | 
					import android.util.Log;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import androidx.core.content.ContextCompat;
 | 
					import androidx.core.content.ContextCompat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import androidx.core.content.ContextCompat;
 | 
					import androidx.core.content.ContextCompat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class BootReceiver extends BroadcastReceiver {
 | 
					public class BootReceiver extends BroadcastReceiver {
 | 
				
			||||||
 | 
					    private final String TAG = "BootReceiver";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onReceive(Context context, Intent intent) {
 | 
					    public void onReceive(Context context, Intent intent) {
 | 
				
			||||||
        if (MoxplatformAndroidPlugin.getStartAtBoot(context)) {
 | 
					        if (MoxplatformAndroidPlugin.getStartAtBoot(context)) {
 | 
				
			||||||
 | 
						    if (BackgroundService.wakeLock == null) {
 | 
				
			||||||
 | 
							Log.d(TAG, "Wakelock is null. Acquiring it...");
 | 
				
			||||||
 | 
							BackgroundService.getLock(context).acquire(MoxplatformConstants.WAKE_LOCK_DURATION);
 | 
				
			||||||
 | 
							Log.d(TAG, "Wakelock acquired...");
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ContextCompat.startForegroundService(context, new Intent(context, BackgroundService.class));
 | 
					            ContextCompat.startForegroundService(context, new Intent(context, BackgroundService.class));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package me.polynom.moxplatform_android;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MoxplatformConstants {
 | 
				
			||||||
 | 
					    // https://github.com/ekasetiawans/flutter_background_service/blob/e427f3b70138ec26f9671c2617f9061f25eade6f/packages/flutter_background_service_android/android/src/main/java/id/flutter/flutter_background_service/BootReceiver.java#L20
 | 
				
			||||||
 | 
					    public static final long WAKE_LOCK_DURATION = 10*60*1000L;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -23,6 +23,7 @@ class BackgroundServiceDataSender extends AwaitableDataSender<BackgroundCommand,
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pragma('vm:entry-point')
 | 
				
			||||||
Future<void> androidEntrypoint() async {
 | 
					Future<void> androidEntrypoint() async {
 | 
				
			||||||
  print("androidEntrypoint: Called on new FlutterEngine");
 | 
					  print("androidEntrypoint: Called on new FlutterEngine");
 | 
				
			||||||
  WidgetsFlutterBinding.ensureInitialized();
 | 
					  WidgetsFlutterBinding.ensureInitialized();
 | 
				
			||||||
@ -76,10 +77,10 @@ class AndroidIsolateHandler extends IsolateHandler {
 | 
				
			|||||||
    _log.finest("Called start");
 | 
					    _log.finest("Called start");
 | 
				
			||||||
    WidgetsFlutterBinding.ensureInitialized();
 | 
					    WidgetsFlutterBinding.ensureInitialized();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    final androidEntryHandle = PluginUtilities.getCallbackHandle(androidEntrypoint)!.toRawHandle();
 | 
					    final androidEntrypointHandle = PluginUtilities.getCallbackHandle(androidEntrypoint)!.toRawHandle();
 | 
				
			||||||
    _log.finest('AndroidEntryHandle: $androidEntryHandle');
 | 
					    _log.finest('androidEntrypointHandle: $androidEntrypointHandle');
 | 
				
			||||||
    await _channel.invokeMethod("configure", [
 | 
					    await _channel.invokeMethod("configure", [
 | 
				
			||||||
        androidEntryHandle,
 | 
					        androidEntrypointHandle,
 | 
				
			||||||
        jsonEncode({
 | 
					        jsonEncode({
 | 
				
			||||||
            "genericEntrypoint": PluginUtilities.getCallbackHandle(entrypoint)!.toRawHandle(),
 | 
					            "genericEntrypoint": PluginUtilities.getCallbackHandle(entrypoint)!.toRawHandle(),
 | 
				
			||||||
            "eventHandle": PluginUtilities.getCallbackHandle(handleUIEvent)!.toRawHandle()
 | 
					            "eventHandle": PluginUtilities.getCallbackHandle(handleUIEvent)!.toRawHandle()
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
name: moxplatform_android
 | 
					name: moxplatform_android
 | 
				
			||||||
description: Android implementation of moxplatform
 | 
					description: Android implementation of moxplatform
 | 
				
			||||||
version: 0.1.10
 | 
					version: 0.1.11
 | 
				
			||||||
homepage: https://codeberg.org/moxxy/moxplatform
 | 
					homepage: https://codeberg.org/moxxy/moxplatform
 | 
				
			||||||
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					publish_to: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -22,10 +22,10 @@ dependencies:
 | 
				
			|||||||
    sdk: flutter
 | 
					    sdk: flutter
 | 
				
			||||||
  moxplatform_platform_interface:
 | 
					  moxplatform_platform_interface:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
    version: 0.1.10
 | 
					    version: 0.1.11
 | 
				
			||||||
  moxplatform:
 | 
					  moxplatform:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
    version: 0.1.10
 | 
					    version: 0.1.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  moxlib:
 | 
					  moxlib:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
name: moxplatform_generic
 | 
					name: moxplatform_generic
 | 
				
			||||||
description: Generic implementations of moxplatform
 | 
					description: Generic implementations of moxplatform
 | 
				
			||||||
version: 0.1.10
 | 
					version: 0.1.11
 | 
				
			||||||
homepage: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					homepage: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
@ -14,11 +14,11 @@ dependencies:
 | 
				
			|||||||
  moxplatform:
 | 
					  moxplatform:
 | 
				
			||||||
    path: ../moxplatform
 | 
					    path: ../moxplatform
 | 
				
			||||||
   #hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					   #hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
   #version: 0.1.10
 | 
					   #version: 0.1.11
 | 
				
			||||||
  moxplatform_platform_interface:
 | 
					  moxplatform_platform_interface:
 | 
				
			||||||
    path: ../moxplatform_platform_interface
 | 
					    path: ../moxplatform_platform_interface
 | 
				
			||||||
   #hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					   #hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
   #version: 0.1.10
 | 
					   #version: 0.1.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  moxlib:
 | 
					  moxlib:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
name: moxplatform_linux
 | 
					name: moxplatform_linux
 | 
				
			||||||
description: Linux-specific implementation of moxplatform
 | 
					description: Linux-specific implementation of moxplatform
 | 
				
			||||||
version: 0.1.10
 | 
					version: 0.1.11
 | 
				
			||||||
homepage: https://codeberg.org/moxxy/moxplatform
 | 
					homepage: https://codeberg.org/moxxy/moxplatform
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
@ -14,7 +14,7 @@ dependencies:
 | 
				
			|||||||
  moxplatform:
 | 
					  moxplatform:
 | 
				
			||||||
    path: ../moxplatform
 | 
					    path: ../moxplatform
 | 
				
			||||||
   #hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					   #hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
   #version: 0.1.10
 | 
					   #version: 0.1.11
 | 
				
			||||||
  moxplatform_generic:
 | 
					  moxplatform_generic:
 | 
				
			||||||
    path: ../moxplatform_generic
 | 
					    path: ../moxplatform_generic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
name: moxplatform_platform_interface
 | 
					name: moxplatform_platform_interface
 | 
				
			||||||
description: A common platform interface for the my_plugin plugin.
 | 
					description: A common platform interface for the my_plugin plugin.
 | 
				
			||||||
version: 0.1.10
 | 
					version: 0.1.11
 | 
				
			||||||
homepage: https://codeberg.org/moxxy/moxplatform
 | 
					homepage: https://codeberg.org/moxxy/moxplatform
 | 
				
			||||||
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					publish_to: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -14,7 +14,7 @@ dependencies:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  moxplatform:
 | 
					  moxplatform:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
    version: 0.1.10
 | 
					    version: 0.1.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  moxlib:
 | 
					  moxlib:
 | 
				
			||||||
    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
					    hosted: https://git.polynom.me/api/packages/Moxxy/pub
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user