2012-12-11 7 views
11

문서에는 공급자가 성공적으로로드되면 true를 반환하고 그렇지 않으면 false를 반환해야한다고 명시되어 있습니다. 내 구현에서는, 나는 DatabaseHelper == null 인 경우 false를 반환합니다.ContentProvider의 OnCreate에서 false를 반환하면 어떻게됩니까?

지금 DatabaseHelper == null과 거짓가에서 onCreate에 반환 가정, 나중에 코드에서 어딘가에 공급자를 조회, 공급자는 여전히 조회되는 및 사촌의이 충돌합니다.

제 질문은 ContentProvider의 OnCreate에서 false를 반환하는 용도는 무엇입니까? 그리고 onCreate가 실패한 후 쿼리를 어떻게 처리해야합니까? 그냥 쿼리에서 onCreate를 다시 실행 하시겠습니까?

답변

12

ContentProvider의 OnCreate에서 false를 반환하는 용도는 무엇입니까?

빠르게 안드로이드 소스를 통해 이동하여 내가 지금에 관해서는, 정말 그냥 지금에 관해서는 다시 ,을 무시 얻을, 당신은 반환 무엇 중요하지 않습니다 것을 발견했다.

테스트 및 ActivityThread

, attachInfo이 바로 newInstance 후라고합니다 그래서 당신은 at line 1058 어디 onCreate라고하고처럼 보이는 ContentProvider 소스를 보면 :

/** 
* After being instantiated, this is called to tell the content provider 
* about itself. 
* 
* @param context The context this provider is running in 
* @param info Registered information about this content provider 
*/ 
public void attachInfo(Context context, ProviderInfo info) { 
    /* 
    * We may be using AsyncTask from binder threads. Make it init here 
    * so its static handler is on the main thread. 
    */ 
    AsyncTask.init(); 

    /* 
    * Only allow it to be set once, so after the content service gives 
    * this to us clients can't change it. 
    */ 
    if (mContext == null) { 
     mContext = context; 
     mMyUid = Process.myUid(); 
     if (info != null) { 
      setReadPermission(info.readPermission); 
      setWritePermission(info.writePermission); 
      setPathPermissions(info.pathPermissions); 
      mExported = info.exported; 
     } 
     ContentProvider.this.onCreate(); 
    } 
} 

이 문서는 말한다면 그렇게 사람이 알고 있다는 것을 명심하십시오, 어쩌면 이것은 미래의 릴리스에서 사용되거나 수정 될 것입니다.


난 후 쿼리 처리하는 방법에서 onCreate 실패? 그냥 쿼리에서 onCreate를 다시 실행 하시겠습니까?

내가, 내가 onCreate

당신의 설명서에 따라 의미, 그래 반드시 onCreate하지만 한 번 초기화하고 DatabaseHelper 정도, 그 것이다 당신의 최선의 노력을 보장 자신 만의 방법을 말할 것 콘텐츠 공급자가 사용될 때까지 중요하지 않은 초기화 (예 : 데이터베이스 열기, 업그레이드 및 검색)를 연기해야합니다.

기술적으로 의도 한대로 수행하고 있지만 아직까지는 여기 그렇게 안전 해.

+0

늦게 받아 드려 죄송합니다, 좋은 답변입니다! – Bear

관련 문제