我一直在开发一个应用程序,但我注意到在闲置一段时间后启动该应用程序不会加载。它只是挂在白屏上,并且反应迟钝。
我用try / catch包装主函数并显示错误,但是从未抛出异常,它只是冻结。如果我强行关闭应用程序,然后重新启动,它将再次起作用。据我所知,这仅发生在物理Pixel 3设备上的android上。
我的主要对象是异步的,所以我不确定是否与此有关。
当应用程序更新身份验证令牌时,我还检查了服务器日志,甚至没有被命中。
还有其他人遇到过这样的问题吗?
我正在运行的应用是在物理设备上调试生成的apk,这对于调试应用来说是否是已知的事情,而在发布模式下运行会消失吗?
import 'package:flutter/material.dart';
import './sharedServices/Auth.dart';
import './sharedServices/Environment.dart';
import './screens/Root/Root.dart';
import './contstants.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'utilities/JWT.dart';
import 'utilities/ApiGateway.dart';
import 'models/User.dart';
void main() async {
try {
User u;
final storage = new FlutterSecureStorage();
bool authenticated = false;
List results = await Future.wait([
storage.read(key: 'idToken'),
storage.read(key: 'accessToken'),
storage.read(key: 'refreshToken'),
storage.read(key: 'firstName'),
storage.read(key: 'lastName'),
storage.read(key: 'email'),
storage.read(key: 'refreshTokenExpiration')
]);
if (results != null) {
u = new User(results[3], results[4], results[5]);
bool idTokenActive = JWT.isActive(results[0]);
bool refreshTokenActive = JWT.refreshTokenActive(results[6]);
if (!idTokenActive && !refreshTokenActive) {
await storage.deleteAll();
} else if (!idTokenActive && refreshTokenActive) {
Map<String, dynamic> newTokens = await ApiGateway.refreshOutsideApp(
results[5], DEV_API_BASE_URL, results[2]);
if (newTokens['error'] != null) {
await storage.deleteAll();
} else {
authenticated = true;
await storage.write(key: 'idToken', value: newTokens['idToken']);
await storage.write(
key: 'accessToken', value: newTokens['accessToken']);
await storage.write(
key: 'refreshToken', value: newTokens['refreshToken']);
await storage.write(
key: 'refreshTokenExpiration',
value: newTokens['refreshTokenExpiration'].toString());
}
} else {
authenticated = true;
}
}
return runApp(EnvironmentContainer(
baseUrl: DEV_API_BASE_URL,
child:
AuthContainer(user: u, child: Root(authenticated: authenticated))));
} catch(e) {
return runApp(
MaterialApp(
title: 'ERROR',
home: Scaffold(
body: Container(
child: Center(
child: Text(
e.toString(),
style: TextStyle(
fontSize: 20
),
),
),
),
),
)
);
}
}