Я создаю временное демонстрационное приложение, и мне нужна служба, которая опрашивает сервер каждую минуту.(Я знаю, что есть лучшие механизмы для этого).Теперь у меня есть класс, который я называю APIHandler, который должен использовать и мой MainActivity, и сервис.У меня возникли проблемы с предоставлением сервиса экземпляру моего класса APIHandler.Поэтому я хочу, чтобы мой сервис мог использовать мой экземпляр APIHandler.Класс APIHandler нельзя сделать статическим, так как ему нужен объект Volley.newRequestQueue, которому нужен экземпляр контекста.
Вот так я запускаю свой сервис с моей MainActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setup()
apiHandler = APIHandler(this) //I neeed this instance...
PollingService.enqueueWork(this, Intent(this, PollingService::class.java))
}
Это мой сервис
class PollingService(private val apiHandler: APIHandler) : JobIntentService() {
private val timer = Timer()
private val tag = "PollingService"
//To be present here!
companion object {
fun enqueueWork(context: Context, work: Intent) {
enqueueWork(context, PollingService::class.java, 1, work)
}
}
override fun onHandleWork(intent: Intent) {
Log.d(tag, "Starting")
timer.scheduleAtFixedRate(timerTask {
run {
Log.d(tag, "Polling...")
apiHandler.getLEDState(1)
apiHandler.getLEDState(2)
}
}, 0, 5000)
}
override fun onBind(intent: Intent): IBinder? {
return null
}
override fun onDestroy() {
this.timer.cancel()
super.onDestroy()
}
}