This is an automated email from the ASF dual-hosted git repository. kyork pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push: new e8a7c93 Android data base fix (#1970) e8a7c93 is described below commit e8a7c932bb75109decfc64f3d39303da33c82418 Author: lvfen <284437...@qq.com> AuthorDate: Wed Dec 26 17:02:40 2018 +0800 Android data base fix (#1970) * [Android]fix WXSQLiteOpenHelper crash --- .../weex/appfram/storage/DefaultWXStorage.java | 21 +++++---- .../weex/appfram/storage/WXSQLiteOpenHelper.java | 51 ++++++++++++---------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java index 2898848..226525b 100644 --- a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java +++ b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java @@ -143,15 +143,20 @@ public class DefaultWXStorage implements IWXStorageAdapter { @Override public void close() { - try { - mDatabaseSupplier.closeDatabase(); - if (mExecutorService != null) { - mExecutorService.shutdown(); - mExecutorService = null; + execute(new Runnable() { + @Override + public void run() { + try { + mDatabaseSupplier.closeDatabase(); + if (mExecutorService != null) { + mExecutorService.shutdown(); + mExecutorService = null; + } + } catch (Exception e) { + WXLogUtils.e(WXSQLiteOpenHelper.TAG_STORAGE, e.getMessage()); + } } - } catch (Exception e) { - WXLogUtils.e(WXSQLiteOpenHelper.TAG_STORAGE, e.getMessage()); - } + }); } private boolean performSetItem(String key, String value, boolean isPersistent, boolean allowRetryWhenFull) { diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java index ff67808..4477030 100644 --- a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java +++ b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java @@ -150,33 +150,40 @@ public class WXSQLiteOpenHelper extends SQLiteOpenHelper { if (mDb != null && mDb.isOpen()) { return; } - // Sometimes retrieving the database fails. We do 2 retries: first without database deletion - // and then with deletion. - for (int tries = 0; tries < 2; tries++) { - try { - if (tries > 0) { - //delete db and recreate - deleteDB(); + + try { + // Sometimes retrieving the database fails. We do 2 retries: first without database deletion + // and then with deletion. + for (int tries = 0; tries < 2; tries++) { + try { + if (tries > 0) { + //delete db and recreate + deleteDB(); + } + mDb = getWritableDatabase(); + break; + } catch (SQLiteException e) { + e.printStackTrace(); + } + // Wait before retrying. + try { + Thread.sleep(SLEEP_TIME_MS); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); } - mDb = getWritableDatabase(); - break; - } catch (SQLiteException e) { - e.printStackTrace(); } - // Wait before retrying. - try { - Thread.sleep(SLEEP_TIME_MS); - } catch (InterruptedException ie) { - Thread.currentThread().interrupt(); + if(mDb == null){ + return; } - } - if(mDb == null){ - return; - } - createTableIfNotExists(mDb); + createTableIfNotExists(mDb); + + mDb.setMaximumSize(mMaximumDatabaseSize); + } catch (Throwable e) { + mDb = null; + WXLogUtils.d(TAG_STORAGE,"ensureDatabase failed, throwable = " + e.getMessage()); + } - mDb.setMaximumSize(mMaximumDatabaseSize); } public synchronized void setMaximumSize(long size) {