Так должен ли я реализовать свой собственный класс View тоже? Будет ли поставщик переопределять жизненный цикл произвольно? Извините, я не совсем понимаю, какой части API мне следует доверять? С тех пор я исправил проблему, но ваш комментарий меня не шокирует, поскольку я не могу поверить, что такие вещи ожидаются, потому что я прочитал документацию и ожидал, что они будут вести себя так, как они задокументированы?

леднее время я получаю много жалоб на серию HTC Desire, и она перестала работать при вызове SQL-операторов. Я получил отчеты от пользователей со снимками журнала, которые содержат следующее.

I/Database( 2348): sqlite returned: error code = 8, msg = statement aborts at 1: [pragma journal_mode = WAL;] 
E/Database( 2348): sqlite3_exec to set journal_mode of /data/data/my.app.package/files/localized_db_en_uk-1.sqlite to WAL failed

затем мое приложение в основном горит в огне, потому что вызов, чтобы открыть базу данных, приводит к серьезной ошибке во время выполнения, которая проявляется в том, что курсор остается открытым. В этой точке не должно быть курсора, так как мы пытаемся его открыть.

Это происходит только с HTC Desire HD и Z. Мой код в основном делает следующее (немного изменен, чтобы изолировать проблемную область).

SQLiteDatabase db;
String dbName;

public SQLiteDatabase loadDb(Context context) throws IOException{
   //Close any old db handle
   if (db != null && db.isOpen()) {
      db.close();
   } 
  // The name of the database to use from the bundled assets.
  String dbAsset = "/asset_dir/"+dbName+".sqlite";
  InputStream myInput = context.getAssets().open(dbAsset, Context.MODE_PRIVATE);

  // Create a file in the app's file directory since sqlite requires a path
  // Not ideal but we will copy the file out of our bundled assets and open it
  // it in another location.
  FileOutputStream myOutput = context.openFileOutput(dbName, Context.MODE_PRIVATE);

  byte[] buffer = new byte[1024];
  int length;
  while ((length = myInput.read(buffer)) > 0) {
      myOutput.write(buffer, 0, length);
  }

  // Close the streams
  myOutput.flush();
  // Guarantee Write!
  myOutput.getFD().sync();
  myOutput.close();
  myInput.close();
  // Not grab the newly written file
  File fileObj = context.getFileStreamPath(dbName);
  // and open the database
  return db = SQLiteDatabase.openDatabase(fileObj.getAbsolutePath(), null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}

К сожалению, этот телефон доступен только в Великобритании, и у меня его нет в моем инвентаре. Я получаю сообщения только такого типа из серии HTC Desire. Я не знаю, что изменилось, так как этот код работал без проблем. Есть ли что-то, что мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос