Intereting Posts
Поддержка Ланге для Gujrati и хинди в андроиде Какой класс следует использовать для даты в Android? Сюрпризное поведение eclipse для файлов C при использовании JNI. Почему? Интеграция Unity3D с Vuforia в приложение Cordova Как получить информацию о версии встроенной библиотеки? ОФИЦИАЛЬНО невозможно получить цену биллингового элемента внутри приложения во время выполнения? RecyclerView – просмотр в определенном положении Устройство не отвечает на заданный адрес Есть ли способ реализовать полнотекстовый поиск (FTS) в SQlite с платформы Android? SetCurrentItem на ViewPager вызывает исключение Как реализовать событие Swipe для просмотра Flipper в ViewPager? Защита конечных точек API для API приложений Google Как предоставить root-доступ к конкретному приложению из исходного кода вместо укоренения ROM? Создание TableView с фиксированной строкой заголовка (не прокручивается) Дополнительные разрешения, чтобы приложение отображалось на всех устройствах и включало дополнительные функции на некоторых устройствах?

Как выбросить исключение, если метод выполняется из основного потока

У меня есть класс с суровыми методами, которые извлекают данные из базы данных sqlite. Я хотел бы «заставить» пользователей этого класса вызывать эти методы в потоке или в asynctask.

Как я могу предотвратить запуск метода в основном потоке?

Я хотел бы добиться чего-то похожего на android.os.NetworkOnMainThreadException, которое вы выбрали при попытке создать некоторую сеть в потоке ui.

Сделайте что-то вроде:

if (Looper.myLooper() == Looper.getMainLooper()) { throw new DontDoThisOnUiThreadPleaseException(); } 

Источник: Looper.getMainLooper () и Looper.myLooper () .

Из библиотеки Google Volley:

  private void throwIfOnMainThread() { if (Looper.myLooper() == Looper.getMainLooper()) { throw new IllegalStateException("Must not be invoked from the main thread."); } } 
 if (Looper.getMainLooper().equals(Looper.myLooper())) { throw new MyException("Don't do it on the UI thread"); } 

Попробуйте это, он должен работать. Конечно, создайте свое собственное исключение или используйте существующее.

См. Документацию Looper, чтобы проверить, запущена ли вы в нити ui или нет.