added foreground service
parent
0779955ef0
commit
675441894a
@ -1,5 +1,27 @@
|
||||
package com.example.hmg_qline.hmg_qline
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
|
||||
class MainActivity : FlutterActivity() {}
|
||||
class MainActivity : FlutterActivity() {
|
||||
private val CHANNEL = "com.example.hmg_qline/foreground"
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {
|
||||
call, _ ->
|
||||
Log.d("MainActivity", "MethodChannel call received: ${call.method}")
|
||||
if (call.method == "reopenApp") {
|
||||
Log.d("MainActivity", "reopenApp called, launching MainActivity")
|
||||
val intent = Intent(this, MainActivity::class.java)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
import 'package:flutter_foreground_task/flutter_foreground_task.dart';
|
||||
|
||||
void startCallback() {
|
||||
FlutterForegroundTask.setTaskHandler(MyTaskHandler());
|
||||
}
|
||||
|
||||
class MyTaskHandler extends TaskHandler {
|
||||
@override
|
||||
Future<void> onStart(DateTime timestamp, TaskStarter? starter) async {
|
||||
// Initialization code, e.g. open DB or services
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onDestroy(DateTime timestamp, bool isTimeout) async {
|
||||
// Clean up if needed
|
||||
}
|
||||
|
||||
@override
|
||||
void onRepeatEvent(DateTime timestamp) {
|
||||
// Called based on the eventAction set in ForegroundTaskOptions
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:hmg_qline/config/dependency_injection.dart';
|
||||
import 'package:hmg_qline/services/logger_service.dart';
|
||||
import 'package:hmg_qline/utilities/enums.dart';
|
||||
|
||||
class LifecycleHandler extends WidgetsBindingObserver {
|
||||
final void Function()? onResumed;
|
||||
final void Function()? onPaused;
|
||||
final void Function()? onDetached;
|
||||
final void Function()? onInactive;
|
||||
final void Function()? onHidden;
|
||||
|
||||
LifecycleHandler({
|
||||
this.onResumed,
|
||||
this.onPaused,
|
||||
this.onDetached,
|
||||
this.onInactive,
|
||||
this.onHidden,
|
||||
});
|
||||
|
||||
@override
|
||||
void didChangeAppLifecycleState(AppLifecycleState state) {
|
||||
LoggerService loggerService = getIt.get<LoggerService>();
|
||||
loggerService.logInfo("[didChangeAppLifecycleState] : ${state.toString()}");
|
||||
switch (state) {
|
||||
case AppLifecycleState.resumed:
|
||||
onResumed?.call();
|
||||
break;
|
||||
case AppLifecycleState.paused:
|
||||
onPaused?.call();
|
||||
break;
|
||||
case AppLifecycleState.inactive:
|
||||
onInactive?.call();
|
||||
break;
|
||||
case AppLifecycleState.detached:
|
||||
onDetached?.call();
|
||||
break;
|
||||
case AppLifecycleState.hidden:
|
||||
onHidden?.call();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void register() {
|
||||
WidgetsBinding.instance.addObserver(this);
|
||||
}
|
||||
|
||||
void unregister() {
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:hmg_qline/constants/app_constants.dart';
|
||||
import 'package:hmg_qline/services/logger_service.dart';
|
||||
import 'package:hmg_qline/utilities/enums.dart';
|
||||
import 'package:restart_app/restart_app.dart';
|
||||
|
||||
abstract class NativeMethodChannelService {
|
||||
void reopenApp();
|
||||
|
||||
void restartApp();
|
||||
}
|
||||
|
||||
class NativeMethodChannelServiceImp implements NativeMethodChannelService {
|
||||
MethodChannel platform;
|
||||
LoggerService loggerService;
|
||||
|
||||
NativeMethodChannelServiceImp({required this.platform, required this.loggerService});
|
||||
|
||||
@override
|
||||
void reopenApp() async {
|
||||
try {
|
||||
await platform.invokeMethod(AppStrings.openAppNativeFunctionName);
|
||||
} catch (e) {
|
||||
loggerService.logError("Error launching app: $e");
|
||||
loggerService.logToFile("Error launching app: $e", type: LogTypeEnum.error);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void restartApp() async {
|
||||
try {
|
||||
await Restart.restartApp();
|
||||
} catch (e) {
|
||||
loggerService.logError("Error restarting App : $e");
|
||||
loggerService.logToFile("Error restarting App : $e", type: LogTypeEnum.error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue