2010-12-31 5 views
1

startManagingCursor()をアクティビティではなくサービス内で使用する方法はありますか?結果は同じですか(here)。サービス内でstartManagingCursor()?

具体的には、サービスのライフサイクルに基づいて、特定のCursorのライフサイクルを管理したいと考えています。たとえば、サービスが破棄されると、指定されたCursorでdeactivate()が自動的に呼び出されます。また、サービスが作成/再開されると、それはrequery()メソッドを呼び出します。

  • は Service.classに実装され、他の 適切なメソッドを使用して、それは可能ですか?
  • 他の方法で実現可能ですか?
  • または、まったく無意味ですか?

答えて

7

代わりに活動のサービス内startManagingCursor()を使用する方法は、同じ結果

いや、申し訳ありませんと、あります。

Service.classに実装されている他の適切な方法を使用することは可能ですか?

それはいくつかの他の方法で実現可能ですか?

あなたが望むことを行うための独自のサポートコードを書くことは大歓迎です。私は、あなたが探しているものを実装できるかどうかは疑問です。

まったく無意味ですか?

IMHO、はい。サービスが破棄されたときにCursorが自動的に閉じられることは悪い考えではありません。しかし、deactivate()/requery()の概念は、私のサービスにはほとんど意味がありません。これは不可能な部分でもあります。これは、あなたのサービスの将来の化身によって捕捉される無効化されたCursorを置く場所がないからです。

+0

あなたに多くのことをお願いします:)火曜日の午後に古典commonswareの答えよりも良い – nifo

+0

何を... –

+1

CommonsWare-ことができ、それがこのway..Activityすることによって行うこと@ ac =新しいアクティビティ(); \t \t ac.startManagingCursor(sdCur12); –

0

その可能性は、あなただけの活動にキャストする必要があります

((活動)コンテキスト).startManagingCursor(カーソル)以下のように

。ここで

は完全なコードである

private void getUserId(Context context) { 

    AdapterClass adapterClass = new AdapterClass(this, 
    DatabaseDetail.TABLE_USER_REGISTRATION); 
    adapterClass.Open(); 

    Cursor cursor = adapterClass.fetchRecords(new String[]{"USER_OID"}, 
    null); 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { 
    ((Activity) context).startManagingCursor(cursor); 
    } 
    cursor.moveToFirst(); 

    adapterClass.close(); 

} 
関連する問題