I am trying to get my first http request and I am receving this error
Process: com.example.retrofit, PID: 3359 java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: androidx.startup.StartupException: java.lang.IllegalStateException: ProcessLifecycleInitializer cannot be initialized lazily. Please ensure that you have:
MainActivity
const val TAG = "MainActivity"
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var todoAdapter: TodoAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setupRV()
lifecycleScope.launchWhenCreated {
binding.progressBar.isVisible = true
val response = try {
RetrofitInstance.api.getTodos()
} catch (e: IOException) {
Log.e(TAG, "IOException")
return@launchWhenCreated
} catch (e: HttpException) {
Log.e(TAG, "HttpException")
binding.progressBar.isVisible = false
return@launchWhenCreated
}
if (response.isSuccessful && response.body() != null) {
todoAdapter.todos = response.body()!!
} else {
Log.e(TAG, "Response failed")
}
binding.progressBar.isVisible = false
}
}
private fun setupRV() = binding.rvTodos.apply {
todoAdapter = TodoAdapter()
adapter = todoAdapter
layoutManager = LinearLayoutManager(this@MainActivity)
}
}
RetrofitInstance
object RetrofitInstance {
val api: TodoApi by lazy {
Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(TodoApi::class.java)
}
}
TodoApi
interface TodoApi {
@GET("/todos")
suspend fun getTodos(): Response<List<TodoData>>
}