Maison >Java >javaDidacticiel >Comment puis-je obtenir un résultat booléen à partir d'une AsyncTask Android effectuant des opérations FTP ?

Comment puis-je obtenir un résultat booléen à partir d'une AsyncTask Android effectuant des opérations FTP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-24 03:40:14194parcourir

How Can I Get a Boolean Result from an Android AsyncTask Performing FTP Operations?

Obtention d'un résultat booléen à partir d'AsyncTask

Dans votre application Android, vous utilisez AsyncTasks pour effectuer des opérations FTP. Cependant, vous êtes confronté à un défi pour renvoyer une valeur booléenne indiquant si la connexion a réussi.

À l'origine, votre code utilisait ftpConnect pour établir la connexion de manière synchrone et stockait le résultat dans une variable booléenne (statut). Cependant, avec AsyncTasks, vous essayez d'effectuer l'opération de manière asynchrone.

Pour renvoyer une valeur booléenne de votre AsyncTask, pensez à implémenter une interface :

public interface MyInterface {
    public void myMethod(boolean result);
}

Implémentez cette interface dans votre AsyncTask et transmettez-en une instance en paramètre au constructeur :

public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> {

    private MyInterface mListener;

    public AsyncConnectTask(Context context, String address, String user,
        String pass, int port, MyInterface mListener) {
        mContext = context;
        _address = address;
        _user = user;
        _pass = pass;
        _port = port;
        this.mListener  = mListener;
    }

    @Override
    protected Boolean doInBackground(Void... params) {
        ....
        return result;
   }


    @Override
    protected void onPostExecute(Boolean result) {
        if (mListener != null) 
            mListener.myMethod(result);
    }
}

Dans votre activité ou fragment, créez une instance de AsyncTask et transmettez l'implémentation de votre interface en tant que paramètre :

AsyncConnectTask task = new AsyncConnectTask(SiteManager.this,
                        _address, _username, _password, _port,  new MyInterface() {
    @Override
    public void myMethod(boolean result) {
        if (result == true) {
            Toast.makeText(SiteManager.this, "Connection Succesful",
            Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(SiteManager.this, "Connection Failed:" + status, Toast.LENGTH_LONG).show();
        } 
    }
});

task.execute();

Dans l'implémentation myMethod, vous pouvez gérer le résultat selon vos besoins. Notez que cette méthode sera invoquée sur le fil de discussion de l'interface utilisateur

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn