Intereting Posts

Обработка исключений (кросс-процессов) в пользовательском контенте Android

У меня есть пользовательский контент-провайдер в моем приложении для Android, который работает достаточно хорошо. Я ожидаю, что другие приложения также получат доступ к моему поставщику контента. Я бы хотел, чтобы какой-то чистый способ обмениваться исключениями и ошибками, но насколько я могу судить, инфраструктура поставщика контента Android не предоставляет никакого способа распространения исключений между процессами.

Как указать состояние исключения для моего вызывающего абонента? Должен ли я каким-то образом закодировать его в мои возвращенные данные и полагаться на клиентов, чтобы проверить его? Есть ли альтернатива? Если кодирование в обычные данные о возврате – это лучший способ? (Я вижу несколько альтернатив для Cursor возвращаемых вызовом query , но как насчет Uri возвращаемого insert , или int возвращаемого update или delete ?)

Существует короткий список подклассов RuntimeException которые, если их бросить в провайдер, будут повторно RuntimeException в клиентское приложение. Эти:

  • IllegalStateException
  • IllegalArgumentException
  • NullPointerException
  • SecurityException
  • BadParcelableException

Источник: создание контент-провайдеров упоминает IAE и NPE ; Я догадался, что остальные будут работать на основе Javadoc для Parcel.writeException .

Клиентское приложение получит только подробное сообщение, а не трассировку стека или стек причин. Для исключительного состояния, которое может быть закодировано в String (подробное сообщение), это разумный выбор.

Меня все еще интересуют другие решения.