Android: support background process

This commit is contained in:
lollipopkit
2023-03-28 17:12:44 +08:00
parent 42d8505504
commit abee470afc
2 changed files with 27 additions and 3 deletions

View File

@@ -1,6 +1,23 @@
package tech.lolli.toolbox package tech.lolli.toolbox
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterActivity() { class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
val binaryMessenger = flutterEngine.dartExecutor.binaryMessenger
MethodChannel(binaryMessenger, "tech.lolli.toolbox/app_retain").apply {
setMethodCallHandler { method, result ->
if (method.method == "sendToBackground") {
moveTaskToBack(true)
result.success(null)
} else {
result.notImplemented()
}
}
}
}
} }

View File

@@ -1,11 +1,13 @@
import 'package:after_layout/after_layout.dart'; import 'package:after_layout/after_layout.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import '../../core/analysis.dart'; import '../../core/analysis.dart';
import '../../core/route.dart'; import '../../core/route.dart';
import '../../core/update.dart'; import '../../core/update.dart';
import '../../core/utils/platform.dart';
import '../../core/utils/ui.dart'; import '../../core/utils/ui.dart';
import '../../data/model/app/dynamic_color.dart'; import '../../data/model/app/dynamic_color.dart';
import '../../data/model/app/navigation_item.dart'; import '../../data/model/app/navigation_item.dart';
@@ -47,6 +49,7 @@ class _MyHomePageState extends State<MyHomePage>
late int _selectIndex; late int _selectIndex;
late double _width; late double _width;
late S _s; late S _s;
final _channel = const MethodChannel('tech.lolli.toolbox/app_retain');
@override @override
void initState() { void initState() {
@@ -75,8 +78,12 @@ class _MyHomePageState extends State<MyHomePage>
void didChangeAppLifecycleState(AppLifecycleState state) { void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state); super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.paused) { if (state == AppLifecycleState.paused) {
_serverProvider.setDisconnected(); if (isAndroid) {
_serverProvider.stopAutoRefresh(); _channel.invokeMethod('sendToBackground');
} else {
_serverProvider.setDisconnected();
_serverProvider.stopAutoRefresh();
}
} }
if (state == AppLifecycleState.resumed) { if (state == AppLifecycleState.resumed) {
_serverProvider.startAutoRefresh(); _serverProvider.startAutoRefresh();