Как поставить несколько задач в очередь переднего плана, одну за другой? - PullRequest
0 голосов
/ 26 марта 2020
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {

        try {
            Thread {
                while (mDataManager.isMinerEnable()) {
                    Log.i("TEST_APP", "miner running ...")
                    if (!isNetworkConnected()) run {
                        EventBus.getDefault().postSticky(DialogModel())
                        mDataManager.alertNotification(
                            getString(R.string.app_name_fa),
                            getString(R.string.serviceStoped)
                        )
                        mDataManager.setMinerStatus(false)
                        EventBus.getDefault().postSticky(DisableAutoClicker())
                        this.stopSelf()
                        return@Thread
                    }
                    val account = mDataManager.getCurrentAccount() ?: return@Thread
                    if (currentUserId != account.userID) {
                        EventBus.getDefault().postSticky(
                            AccountDataEvent(
                                account.userID,
                                type = AccountDataEvent.TYPE_UPDATE_CURRENT_ACCOUNT
                            )
                        )
                        client?.close()
                    }
                    mClicker.createClient(
                        account.phoneNumber,
                        account.apiId,
                        account.hash,
                        listener = object : ServiceClicker.OnClient {
                            override fun onCreate(client: Client) {
                                currentUserId = account.userID
                                this@MinerService.client = client
                                startMine(account)
                            }
                        }
                    )
                    Thread.sleep(30000)
                }
            }.start()
        } catch (e: Exception) {
            mDataManager.sendLog("Error: ${e.message}")
        }
}

 override fun onCreate() {
        AndroidInjection.inject(this)
        super.onCreate()
    }

Я использую передний план service, чтобы использовать прокси. Мой сервис работает так, что он принимает несколько заказов с сервера и пытается выполнить заказ, подключившись к одной учетной записи. Я использовал вышеупомянутые коды, чтобы сделать это, и у него нет утечки памяти, но программа работает немного медленно, когда служба активна. Есть лучший способ сделать это? Я также отмечаю, что не могу использовать основной поток, потому что это занимает слишком много времени.

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