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
Libérer: 2024-12-24 03:40:14
original
165 Les gens l'ont consulté

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);
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal