0

単一のデータベースとテーブルの作成と管理を支援するために、ストレージ アダプター (コンテキスト) をセットアップしました。レコードを読み取り、バックグラウンドで HTTP 経由で送信するために、新しいスレッドからテーブルにアクセスしようとしています。データベースへのその他のアクセスは、アクティビティ ベースで、挿入のみです。データは小さいですが、可能なレコードの数に基づいてスレッドが数秒実行される場合があります。UI とやり取りする必要はありません。

StorageAdapter クラス (SQL Lite セットアップ)

private static SQLiteDatabase db;
private Context context;
private StorageOpenHelper dbHelper;

public StorageAdapter(Context _context) {
  this.context = _context;
  dbHelper = new StorageOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}

以下のスレッドからのエラー メッセージは次のとおりです。「コンストラクター StorageAdapter(Worker) は未定義です」

スレッドは次のとおりです。

public void run () {
  // Does Storage Adapter need to be runnable           
  // Read DB ID's of committed (1) records into array
  **StorageAdapter storageAdapter = new StorageAdapter(this);**
  storageAdapter.open();
  cursor = storageAdapter.queueCommID();
  int i = 0;
  int currcnt = cursor.getCount();
  if (cursor.getPosition() == -1) cursor.moveToFirst();
  while (i < currcnt) {
    // Send single record to server
    sendrec(cursor);
i=i+1;
cursor.moveToNext();
  }
  storageAdapter.close();
  stop();
};

私が皆を混乱させなかったことを願っています。数日間尻尾を追いかけていて、とても混乱しています。助けてくれてありがとう。

4

1 に答える 1

0

ワーカーインスタンス内からStorageAdapterインスタンスを作成しているようです。つまり、これはコンテキストではなくワーカーを参照します。ワーカーが匿名クラスの場合は、これだけでなくMyActivity.thisのようなものを使用できます。

于 2012-08-01T00:34:33.887 に答える