2017-04-04 1 views
0

Dans mon oncreate de ContentProvider, je veux retourner vrai ou faux en fonction de la condition suivante. Mais faire getWritableDatabase dans oncreate conduira à ANR. Donc, si je publie ceci dans un thread séparé, comment puis-je décider de renvoyer la valeur de oncreate lorsque la valeur de la base de données est nulle. Puis-je retourner la valeur true explicitement?comment décider la valeur de retour (vrai/faux) de oncreate de contentprovider dans android

Thread mCreateOrOpenDatabaseThread = new Thread (new Runnable(){ 
    @Override 
    public void run() { 
    database = dbhelper.getWritableDatabase(); 
    } 
},"CreateOrOpenDatabaseThread"); 
mCreateOrOpenDatabaseThread.start(); 

Que se passe-t-il lorsque nous revenons vrai ou faux et comment cela va-t-il affecter ma demande? Que se passe-t-il en interne au sein d'Android Runtime lorsque nous retournons true ou false dans oncreate?

+0

petit conseil, instruction 'if (database == null) { return false; } else { return true; } 'vous pouvez changer pour' retourner la base de données! = 0; – miljon

+0

'Dans mon oncreate de ContentProvider, je veux retourner vrai ou faux' ET 'Que se passe-t-il lorsque nous retournons vrai ou faux et comment cela affectera mon application. '. ??? Ne correspond pas. Veuillez indiquer pourquoi vous voudriez retourner vrai ou faux pour commencer. – greenapps

+0

La méthode onCreate a une valeur de retour de boolean donc nous devons retourner quelque chose – shrishti

Répondre

0

Peut-être quelque chose comme ça?

public boolean func() { 
    FutureTask<Boolean> ft = new FutureTask<Boolean>(new Callable<Boolean>() { 
     @Override 
     public Boolean call() throws Exception { 
      database = dbhelper.getWritableDatabase(); 

      return true;//true or false.. 
     } 
    }); 
    new Thread(ft).start(); 
    try { 
     return ft.get(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 
+0

pouvez-vous s'il vous plaît laissez-moi savoir ce qui se passe lorsque nous retournons true ou false dans onCreate()? quelle action android prend si je rentre faux cela signifie que mon fournisseur de contenu n'est pas chargé, de sorte qu'il travaillera toujours pour fournir la base de données à d'autres modules ??? – shrishti

+0

Je regarde à travers le code source android.Android ne fera rien si vous retournez faux.En fait, il ne questionne jamais ou enregistre votre valeur de retour. (Mon anglais est trop mauvais? :() – w568w

+0

Mais selon la documentation android https://developer.android.com/reference/android/content/ContentProvider.html il est mentionné que reurn value indique si contentprovider a été chargé ou non.Donc, je voulais juste comprendre l'impact de cette valeur de retour sur mon code – shrishti