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