Android - AsyncTask de la classe et de la méthode Execute

J'ai le code à l'aide de la classe AsyncTask pour remplir une listView avec plusieurs contacts à partir d'une base de données.

@Override
   protected void onResume() 
   {
      super.onResume();

       new MyTask().execute((Object[]) null);
    } //end method onResume

1.- Pourquoi dois-je passer ce: (Object[]) null) comme argument?

Voir l'AsyncTask code:

private class MyTask extends AsyncTask<Object, Object, Cursor> 
   {
      //used for database conection purpose 
      ConectToDatabase databaseConnector = 
         new ConectToDatabase(ThisClass.this);


      @Override
      protected Cursor doInBackground(Object... params)
      {
         databaseConnector.open();

         return databaseConnector.getMyContacts(); 
      } 

      //use the Cursor returned from the doInBackground method
      @Override
      protected void onPostExecute(Cursor result)
      {
         //My cursorAdadper defined in early code
         contactAdapter.changeCursor(result);
         databaseConnector.close();
      } 
   } 

Un autre AsyncTask question:

delete.execute(new Long[] { rowID });

2.- Pourquoi dois-je passer ce: (new Long[] { rowID }) comme un argument et non un simple (rowId)?

rowID est un type long qui contient l'id du contact sélectionné dans ma classe précédente. C'était extendend dans une ListActivity. Cette classe précédente a été rempli par tous mes contacts obtenus dans ma base de données. Quand je suis envoyé des données dans cette classe(par une intention) je veux récupérer les données de contact unique sélectionné dans ma classe précédente, mais dans ce cas, le code s'affiche de cette façon: new LoadMyContact().execute(rowID); situé dans onResume méthode.

3.- Pourquoi dois-je passer seulement: (rowID) comme argument ?

delete.execute(new Long[] { rowID }); est à l'intérieur d'un menu, lorsque l'utilisateur de confirmer la suppression du contact que nous avons l'exécution de cette peine, le code sera présent pour la supprimer(nous sommes à l'intérieur d'un clic d'un bouton):

@Override
            public void onClick(DialogInterface dialog, int button)
            {
               final ConectToDataBase databaseConnector = 
                  new ConectToDataBase(MySecondClass.this);


               AsyncTask<Long, Object, Object> deleteTask =
                  new AsyncTask<Long, Object, Object>()
                  {
                     @Override
                     protected Object doInBackground(Long... params)
                     {
                        databaseConnector.deleteContact(params[0]); 
                        return null;
                     } 

                     @Override
                     protected void onPostExecute(Object result)
                     {
                        finish(); 
                        delete.execute(new Long[] { rowID });              
                      }
                  }; //end new AsyncTask
               delete.execute(new Long[] { rowID });               
            } /

Aider avec cette troisième question et merci.

En Java, Long != long

OriginalL'auteur user2580401 | 2013-08-18