Cómo combinar varias consultas de análisis a la vez

Tengo dos preguntas parse que quiero ser evaluado en un solo clic de un botón. Tengo dos clases en Parse. Quiero comprobar ambas cosas a la vez. Mis preguntas son:

ParseQuery<ParseObject> query =ParseQuery.getQuery("Login"); query.whereEqualTo("x",X); query.whereEqualTo("y",Y); 

Al mismo tiempo de inicio de sesión estoy revisando una relación entre dos entidades. Mi segunda pregunta es:

  ParseQuery<ParseObject> query1 =ParseQuery.getQuery("UserData"); query.whereEqualTo("entity1",entity1); query.whereEqualTo("entity2",entity2); 

Ahora, si ambas consultas tienen éxito, el usuario puede procesar la aplicación. ¿Cómo puedo combinar las dos consultas para que ambas consultas tengan éxito

Utilice una consulta compuesta. El siguiente ejemplo se toma de Parse Docs en http://www.parse.com

 ParseQuery<ParseObject> lotsOfWins = ParseQuery.getQuery("Player"); lotsOfWins.whereGreaterThan(150); ParseQuery<ParseObject> fewWins = ParseQuery.getQuery("Player"); fewWins.whereLessThan(5); List<ParseQuery<ParseObject>> queries = new ArrayList<ParseQuery<ParseObject>>(); queries.add(lotsOfWins); queries.add(fewWins); ParseQuery<ParseObject> mainQuery = ParseQuery.or(queries); mainQuery.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> results, ParseException e) { // results has the list of players that win a lot or haven't won much. } }); 

Puede crear CountDownLatch e inicializarlo con el número de sus consultas. A continuación, cada consulta contará la cuenta regresiva al completar su tarea.

 final CountDownLatch mCountDownLatch = new CountDownLatch(2); ParseQuery<ParseObject> query =ParseQuery.getQuery("Login"); query.whereEqualTo("x",X); query.whereEqualTo("y",Y); ParseQuery<ParseObject> query1 =ParseQuery.getQuery("UserData"); query.whereEqualTo("entity1",entity1); query.whereEqualTo("entity2",entity2); query.findInBackground(new FindCallback<ParseObject>() { @Override public void done(List<ParseObject> parseObjects, ParseException e) { if (null == e) { mCountDownLatch.countDown(); } } }); query1.findInBackground(new FindCallback<ParseObject>() { @Override public void done(List<ParseObject> parseObjects, ParseException e) { if (null == e) { mCountDownLatch.countDown(); } } }); try { mCountDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } finally { proceedToApp(); } 

Sólo tienes que crear hilos separados de los que llamarás await ().

Si estuviera usando JavaScript, diría "Promesas son su amigo".

Puesto que usted está utilizando Java / Android, le sugiero que mire "Bolts".

Aquí hay una entrada de blog de Parse que lo introduce: http://blog.parse.com/2014/10/15/introducing-bolts-for-parse-sdks/

En su caso su onSuccess despediría la segunda consulta o reemplazaría la matriz saveTasks con una matriz findTasks y findInBackground() operaciones findInBackground() .

  • ¿Hay alguna manera recomendada de crear un id para un ParseObject para usar en un RecyclerView?
  • La diferencia entre los mensajes de emisión de GCM y PARSE
  • ¿Cómo almacenar y recibir una foto de perfil en Parse.com?
  • Dos servicios de notificación de empuje en android
  • Android ParseQueryAdapter notifyDataSetChanged no funciona
  • Recuperación de datos de puntero de Parse.com en Android
  • Causado por: java.lang.IllegalStateException: ParsePlugins ya está inicializado
  • Parse.com runtime crash - android
  • Subclase de JavaScript en Parse.com
  • Parse: ¿Cómo configurar un puntero en Android?
  • Android pubnub chat utilizando analizar dando error de clave de autenticación incorrecta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.