1

私は非常に奇妙な問題を抱えています。複数のデバイスで時々表示されるだけです。好きなときに再現できないようですが、何度も再現したので、どこで入手したかはわかっていると思います。

だから私はLoaderシングルトンを介してsqliteに接続するを持っていますSQLiteOpenHelper:

try {
    Log.i(TAG, "Get details offline / db helper: "+DatabaseHelper.getInstance(getContext()));
    SQLiteDatabase db=DatabaseHelper.getInstance(this.getContext()).getWritableDatabase();
    Log.i(TAG, "Get details offline / db: "+db);
    //doing some work on the db...
} catch(SQLiteException e){
    e.printStackTrace();
    return null;
} catch(Exception e){
    e.printStackTrace();
    return null;
    //trying everything to grab some exception or whatever
}

SQLIteOpenHelperは次のように見えます:

public class DatabaseHelper extends SQLiteOpenHelper { 

    private static DatabaseHelper mInstance = null;
    private static Context mCxt;

    public static DatabaseHelper getInstance(Context cxt) {
        //using app context as suggested by CommonsWare
        Log.i("DBHELPER1", "cxt"+mCxt+" / instance: "+mInstance);
        if (mInstance == null) {
            mInstance = new DatabaseHelper(cxt.getApplicationContext());
        }
        Log.i("DBHELPER2", "cxt"+mCxt+" / instance: "+mInstance);
        mCxt = cxt;
        return mInstance;
    }

    //private constructor
    private DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.mCxt = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //some tables created here
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //upgrade code here
    }
}

ほとんどの場合、それは本当にうまく機能します。しかし、ときどき次のようなログが表示されます。

06-10 23:49:59.621: I/DBHELPER1(26499): cxtcom.myapp@407152c8 / instance: com.myapp.helpers.DatabaseHelper@40827560
06-10 23:49:59.631: I/DBHELPER2(26499): cxtcom.myapp@407152c8 / instance: com.myapp.helpers.DatabaseHelper@40827560
06-10 23:49:59.631: I/DetailsLoader(26499): Get event details offline / db helper: com.myapp.helpers.DatabaseHelper@40827560
06-10 23:49:59.631: I/DBHELPER1(26499): cxtcom.myapp@407152c8 / instance: com.myapp.helpers.DatabaseHelper@40827560
06-10 23:49:59.651: I/DBHELPER2(26499): cxtcom.myapp@407152c8 / instance: com.myapp.helpers.DatabaseHelper@40827560

この行Log.i(TAG, "Get details offline / db: "+db);は決して呼び出されません! 例外なし、沈黙。さらに、 のスレッドはLoaderもう実行されていません。

したがって、次の行を超えるものはありません。

SQLiteDatabase db=DatabaseHelper.getInstance(this.getContext()).getWritableDatabase(); 

実行されます。

この行で何が問題になる可能性がありますか?

4

0 に答える 0