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
, чтобы использовать прокси. Мой сервис работает так, что он принимает несколько заказов с сервера и пытается выполнить заказ, подключившись к одной учетной записи. Я использовал вышеупомянутые коды, чтобы сделать это, и у него нет утечки памяти, но программа работает немного медленно, когда служба активна. Есть лучший способ сделать это? Я также отмечаю, что не могу использовать основной поток, потому что это занимает слишком много времени.