进入Androids的Doze模式(锁定屏幕,运行adb shell dumpsys电池拔出,然后运行adb shell dumpsys deviceidle Force-Idle)
几秒钟/分钟后,在“运行”选项卡下,将出现以下内容:
流关闭,状态为:Status{code=unavailable,description=keepalive失败。连接可能已消失,原因=null}。
和[{0}]无法解析名称。状态={1}
捕获的异常是:MyDatabase getDatabaselData[cloud_firestore/unavailable]服务当前不可用。
pubspec.yaml
cloud_firestore: ^0.14.1+3
firebase_storage: ^4.0.1
firebase_core: ^0.5.0+1
firebase_auth: ^0.18.3
编辑2:在编写此编辑时,FlutterFire git上有一个提交挂起(但尚未发布)。因此,解决方案将是更新到最新的Firebase_Core。也可以在Firebase_Core包>gradle.properties>将firebasesdkversion=28.0.1改为firebasesdkversion=28.1.0中手动修复。
编辑:如果手机自然进入状态(6小时完全不活动),问题仍然存在。这个问题似乎必须在FirebaseSDK内部解决,但到目前为止还没有解决:https://github.com/firebaseExtended/flutterfire/issues/4305
老答:
这是代码;创建一个生命周期管理器类(观察者),并将其环绕在您的MaterialApp周围。试捕可能是没有必要的,但我将推动生产明天,所以这只是一个预防措施。
lifecycle_manager.dart
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class LifecycleManager extends StatefulWidget {
final Widget child;
LifecycleManager({Key key, this.child}) : super(key: key);
@override
_LifecycleManagerState createState() => _LifecycleManagerState();
}
class _LifecycleManagerState extends State<LifecycleManager> with WidgetsBindingObserver {
@override
Widget build(BuildContext context) {
return widget.child;
}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
super.dispose();
WidgetsBinding.instance.removeObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
try {
if (state != AppLifecycleState.resumed) FirebaseFirestore.instance.disableNetwork();
else FirebaseFirestore.instance.enableNetwork();
} catch (error) {
print('LifecycleManager | didChangeAppLifecycleState | ' + error.toString());
}
}
}
主飞镖
import 'lifecycle_manager.dart';
LifecycleManager(child: MaterialApp());
我正在使用后台服务,以获得用户的位置和上传到服务器。 我使用了一个扩展Service类的LocationTrack类和扩展BroadcastReciver的AlramReciver。 我已经在manifest中添加了所有权限,并在manifest文件中注册了AlarmReciver和LocationTracker类。 Oreo-在前台启动服务 https://developer.android.c
谁能给我建议哪种最好的方法来不中断地运行应用程序?
请注意,禁用应用程序的电池优化不会帮助打瞌睡模式,正如这里所回答的。
问题内容: 我为提出这样一个愚蠢的问题而道歉,但是我的linux服务器陷入了“ bash”模式。当我通过终端登录时,命令行如下所示: 因此,我无法执行其他命令。如果输入“ exit”,它将关闭终端窗口。如何退出此bash模式,以便可以输入命令? 问题答案: Bash是命令行解释器。这是在Linux系统上运行命令的一种方法。 您是在说这不允许您运行输入的命令吗?使用bash运行命令时会给出什么错误或
-然而在那之后的很多讨论,声称这不完全是真的,我认为很难知道应用程序应该做什么特殊的背景操作。