2011-11-14 7 views
1

私は1つのサービスを作成しました。今私はデータベースのクラスのbojectを作成してサービスのonstart()にアクセスしようとしています。私はカーソルを使用して、いくつかのテーブルからレコードを選択したいと思います。startManagingCursor(カーソルオブジェクト) (カーソルオブジェクト)はタイプsrviceに対して未定義です。今私はカーソルを移動するか、それを管理したい場合、どのように私はそのテーブルからレコードを選択することができますか? startManagingCursor(カーソルオブジェクト)を記述する必要はありません。サービス中ですか? ?私はこの機能を削除した場合、その後、私はレコードをここで私は添付したコードを取得します:メソッドstartManagingCursor(Cursor)は、サービスタイプに対して定義されていませんか?

 @Override 
    public void onStart(Intent intent, int startid) 
    { 
     DBAdapter dbAdapter1 = DBAdapter.getDBAdapterInstance(Srvc_Sms_email.this); 
     dbAdapter1.openDataBase(); 

     String[] sel = {"pid","date","datename"}; 
     Cursor cNames = dbAdapter1.selectRecordsFromDB("datesdatabase",sel,null,null,null,null,null); 
     startManagingCursor(cNames); 
     cNames.moveToFirst(); 
     int i1 =0; 
     while (cNames.isAfterLast() == false) 
     { 
      pid.add(cNames.getInt(0));  
      datelist.add(cNames.getString(1)); 
      namelist.add(cNames.getString(2)); 
      cNames.moveToNext(); 
     }` 

エラーがstartManagingCursor(cNames);で起こります。

+0

http://stackoverflow.com/questions/4569717/startmanagingcursor-in-a-service/29559135#29559135私は右...手動でカーソルをクローズする必要があるわけ –

答えて

0

サービスでstartManagingcursorを使用することはできません。管理されたカーソルは、アクティビティーが破棄されたときにカーソルを閉じる処理を行い、アクティビティーが停止して再始動すると、それらは非活動化され、再クエリーされます。サービスではこれは不可能です。より良く理解するためには、レコードを取得することができ、カーソルをstartmanagingせずにこれらの答え startManagingCursor() in a service?

What's the purpose of startManagingCursor?

を確認します。終了するときにカーソルの終了を処理する必要があります。 (cNames.close())

とあなたのアダプタを取得するときにしようと

DBAdapter dbAdapter1 = DBAdapter.getDBAdapterInstance(getApplicationContext());

+0

OKおかげで、以下のリンクを参照してください? – Sam

+0

@samはいカーソルを手動で閉じる必要がある – AD14

関連する問題