杀死进程方法2
This commit is contained in:
parent
915fa61f0a
commit
85e6d88472
@ -89,12 +89,8 @@ class _SCIndexPageState extends State<SCIndexPage>
|
||||
WakelockPlus.enable();
|
||||
_showEntryDialogs();
|
||||
});
|
||||
String roomId = DataPersistence.getLastTimeRoomId();
|
||||
if (roomId.isNotEmpty) {
|
||||
Provider.of<RtcProvider>(
|
||||
context,
|
||||
listen: false,
|
||||
).cleanupStaleRoomForColdStart(roomId);
|
||||
if (DataPersistence.getLastTimeRoomId().isNotEmpty) {
|
||||
unawaited(DataPersistence.setLastTimeRoomId(""));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -334,7 +334,6 @@ class RealTimeCommunicationManager extends ChangeNotifier {
|
||||
Future<RtcEngine>? _rtcEngineInitTask;
|
||||
Future<void>? _rtcEnginePrewarmTask;
|
||||
Future<void>? _pendingRoomSwitchAgoraLeaveTask;
|
||||
final Map<String, Future<void>> _coldStartRoomCleanupTasks = {};
|
||||
String? _joiningChannelId;
|
||||
bool _isRefreshingMicList = false;
|
||||
bool _isRefreshingOnlineUsers = false;
|
||||
@ -434,51 +433,6 @@ class RealTimeCommunicationManager extends ChangeNotifier {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
void cleanupStaleRoomForColdStart(String roomId) {
|
||||
final normalizedRoomId = roomId.trim();
|
||||
if (normalizedRoomId.isEmpty ||
|
||||
_coldStartRoomCleanupTasks.containsKey(normalizedRoomId)) {
|
||||
return;
|
||||
}
|
||||
late final Future<void> cleanupTask;
|
||||
cleanupTask = _retryExitNetworkRequest(
|
||||
'cold start quit room $normalizedRoomId',
|
||||
() async {
|
||||
if (_isCurrentRoomId(normalizedRoomId)) {
|
||||
return;
|
||||
}
|
||||
final didQuit = await SCAccountRepository().quitRoom(normalizedRoomId);
|
||||
if (!didQuit) {
|
||||
throw StateError('quitRoom returned false');
|
||||
}
|
||||
},
|
||||
).whenComplete(() {
|
||||
if (identical(
|
||||
_coldStartRoomCleanupTasks[normalizedRoomId],
|
||||
cleanupTask,
|
||||
)) {
|
||||
_coldStartRoomCleanupTasks.remove(normalizedRoomId);
|
||||
}
|
||||
if (DataPersistence.getLastTimeRoomId() == normalizedRoomId) {
|
||||
unawaited(DataPersistence.setLastTimeRoomId(""));
|
||||
}
|
||||
});
|
||||
_coldStartRoomCleanupTasks[normalizedRoomId] = cleanupTask;
|
||||
unawaited(cleanupTask);
|
||||
}
|
||||
|
||||
Future<void> _waitForColdStartRoomCleanup(String roomId) async {
|
||||
final normalizedRoomId = roomId.trim();
|
||||
if (normalizedRoomId.isEmpty) {
|
||||
return;
|
||||
}
|
||||
final cleanupTask = _coldStartRoomCleanupTasks[normalizedRoomId];
|
||||
if (cleanupTask == null) {
|
||||
return;
|
||||
}
|
||||
await cleanupTask;
|
||||
}
|
||||
|
||||
bool get roomVisualEffectsEnabled => _roomVisualEffectsEnabled;
|
||||
|
||||
bool get isExitingCurrentVoiceRoomSession =>
|
||||
@ -2153,10 +2107,6 @@ class RealTimeCommunicationManager extends ChangeNotifier {
|
||||
SCTts.show('Microphone permission is denied.');
|
||||
throw ArgumentError('Microphone permission is denied.');
|
||||
}
|
||||
await _waitForColdStartRoomCleanup(roomId);
|
||||
if (!context.mounted) {
|
||||
return;
|
||||
}
|
||||
if (roomId == currenRoom?.roomProfile?.roomProfile?.id) {
|
||||
if (_currentRoomIsEntryPreview ||
|
||||
_roomStartupStatus == RoomStartupStatus.loading) {
|
||||
@ -2182,6 +2132,13 @@ class RealTimeCommunicationManager extends ChangeNotifier {
|
||||
context,
|
||||
listen: false,
|
||||
).fetchUserProfileData();
|
||||
final groupId = currenRoom?.roomProfile?.roomProfile?.roomAccount ?? "";
|
||||
if (groupId.isNotEmpty) {
|
||||
unawaited(
|
||||
rtmProvider?.loadRoomHistoryMessages(groupId, count: 20) ??
|
||||
Future<void>.value(),
|
||||
);
|
||||
}
|
||||
retrieveMicrophoneList();
|
||||
fetchOnlineUsersList();
|
||||
_startRoomStatePolling();
|
||||
@ -2722,7 +2679,8 @@ class RealTimeCommunicationManager extends ChangeNotifier {
|
||||
if (!_isActiveRoomStartup(entryRequestSerial, roomId)) {
|
||||
return;
|
||||
}
|
||||
if (joinResult == null || joinResult.code != 0) {
|
||||
if (joinResult == null ||
|
||||
(joinResult.code != 0 && joinResult.code != 10013)) {
|
||||
_stopVoiceRoomForegroundService();
|
||||
_setRoomStartupFailed(RoomStartupFailureType.im);
|
||||
return;
|
||||
@ -2778,6 +2736,7 @@ class RealTimeCommunicationManager extends ChangeNotifier {
|
||||
return;
|
||||
}
|
||||
_setRoomStartupReady();
|
||||
_refreshRoomRedPacketListAfterEntry(roomId: roomId);
|
||||
|
||||
Msg joinMsg = Msg(
|
||||
groupId: currenRoom?.roomProfile?.roomProfile?.roomAccount ?? "",
|
||||
|
||||
@ -649,7 +649,7 @@ class RealTimeMessagingManager extends ChangeNotifier {
|
||||
groupID: groupID,
|
||||
message: message,
|
||||
);
|
||||
if (joinResult.code == 0) {
|
||||
if (joinResult.code == 0 || joinResult.code == 10013) {
|
||||
onNewMessageListenerGroupMap[groupID] = _newGroupMsg;
|
||||
}
|
||||
return joinResult;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user