У меня есть приложение для Android, которое выпущено в магазине Play Store.
Когда я проверял отчеты о сбоях, я видел что-то странное.
import kotlinx.android.synthetic.main.fragment_item.*
class ItemFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? = inflater.inflate(R.layout.fragment_item, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
presenter.getItem(args.item)
}
override fun onItemLoaded(item: Item) {
tvDesc.text = item.desc // in here: Exception occurrs
}
}
И ниже мой класс докладчика:
class ItemPresenter(
private val view: ItemContract.View,
private val itemsRepository: ItemsRepository,
private val ioScheduler: Scheduler = Schedulers.io(),
private val uiScheduler: Scheduler = AndroidSchedulers.mainThread(),
private val disposable: CompositeDisposable = CompositeDisposable()
) : ItemContract.Presenter {
override fun getItem(name: String) {
disposable.add(
itemsRepository.getItem(name)
.subscribeOn(ioScheduler)
.observeOn(uiScheduler)
.subscribe {
view.onItemLoaded(it)
}
)
}
}
Когда я запускаю на телефоне, он работает нормально. Но согласно сообщениям о сбоях, на нескольких устройствах отображаются исключения IllegalStateExceptions.
Почему?
Следует ли использовать привязку старого стиля? как "findViewById"