Состояние тупика - PullRequest
       57

Состояние тупика

1 голос
/ 21 октября 2019

На самом деле в моем приложении у меня есть расширение службы уведомлений от их обновления, моя область базы данных, которая находится в папке общей группы, и основное приложение также записывают на нее.

Некоторое время мое приложение перестает работать из-за возникновения тупиковой ситуации и приложениявсегда не может написать. У приложения есть код записи в основной процесс инициализации приложения. так что только перезагрузка телефона выводит пользователя из проблемы.

Вот мой код расширения уведомления для записи

func updateInTime(userId: Int) {

        let container = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.****")
        let realmURL = container!.appendingPathComponent("default.realm")
        do {
            let config = Realm.Configuration(
                fileURL: realmURL,
                schemaVersion: schemaVersion)
            Realm.Configuration.defaultConfiguration = config
            updateUserTime(userId: userId)
        }
    }


    func updateUserTime(userId: Int) {
       do {
            let realm = try Realm()
            let predicate = NSPredicate(format: "userID == %d", userId)
            let inTimes = realm.objects(UserInTime.self).filter(predicate)
            if let inTime = inTimes.first {
                try realm.write {
                    inTime.inRadiusTime = Date()
                }

            }
        } catch {
            //Logger.KWLogDebug("Failed to access the Realm database")
        }
        do {
            let realm = try Realm()
            let inTime = UserInTime()
            inTime.userID = userId
            inTime.inRadiusTime = Date()

            try realm.write {
                realm.addOrUpdate(inTime)
            }
        } catch {
            print(error)
        }

    }

updateInTime func вызывает из didReceive (_ request: contentHandler:)

Realm version:

3.10.0

Вот информация журнала сбоев с устройства

**Exception Type:  EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d
Termination Description: SPRINGBOARD, scene-create watchdog transgression: application<com.myapp>:9023 exhausted real (wall clock) time allowance of 29.25 seconds | ProcessVisibility: Background | ProcessState: Running | WatchdogEvent: scene-create | WatchdogVisibility: Background | WatchdogCPUStatistics: ( | "Elapsed total CPU time (seconds): 52.630 (user 52.630, system 0.000), 29% CPU", | "Elapsed application CPU time (seconds): 0.725, 0% CPU" | )
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x00000001b7eae27c 0x1b7e87000 + 160380
1   Realm                           0x00000001084644e4 realm::util::File::lock+ 2802916 (bool, bool) + 64
2   Realm                           0x0000000108396800 realm::SharedGroup::do_begin_write+ 1959936 () + 88
3   Realm                           0x00000001082e5c68 realm::_impl::transaction::begin(std::__1::unique_ptr<realm::SharedGroup, std::__1::default_delete<realm::SharedGroup> > const&, realm::BindingContext*, realm::_impl::NotifierPackage&) + 1236072 (group_shared.hpp:986)
4   Realm                           0x00000001081fc568 realm::_impl::RealmCoordinator::promote_to_write(realm::Realm&) + 279912 (realm_coordinator.cpp:856)
5   Realm                           0x00000001082c04f4 realm::Realm::begin_transaction() + 1082612 (shared_realm.cpp:667)
6   Realm                           0x000000010828f43c -[RLMRealm beginWriteTransaction] + 881724 (RLMRealm.mm:577)
7   myapp-ios                       0x00000001050d0630 specialized static UserSettings.update+ 1082928 (_:) + 460**

Как я могу решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...