android 回调函数二:应用实例

前言:如果对android回调的概念不明白的请看:android 回调函数一:基本概念

1、定义接口

package com.app.util;

public interface ZYJCallBack {
   public void dataResult( String resultString ) ;
   
   public void progress( Integer progress ) ;
   
   public void start() ;
}


2、实体

package com.app.util;
import android.os.AsyncTask;

public class ZYJAsyncTask  extends AsyncTask< String , Integer , String >  {

    ZYJCallBack zyjCallBack ;

    //开始
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        zyjCallBack.start();
    }

    /**
     * 特别注意:publishProgress( 10  );  
     * 这一句一定要写,否则 onProgressUpdate() ,这个方法不会被回调
     */
    @Override
    protected String doInBackground(String... params) {
        publishProgress( 10  );   
        publishProgress( 20  );
        publishProgress( 50  );
        publishProgress( 100  );
        return "哈哈哈,操作完成了" ;
    }

    //onProgressUpdate方法用于更新进度信息  
    @Override  
    protected void onProgressUpdate(Integer... progresses) {  
        zyjCallBack.progress( progresses[0] );
    }  

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        zyjCallBack.dataResult( result );
    }

    public void setCallBackListener(ZYJCallBack zyjCallBack){
        this.zyjCallBack = zyjCallBack ;
    }
}

 

3、回调

package com.android10;
import com.app.util.ZYJAsyncTask;
import com.app.util.ZYJCallBack;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState);
        setContentView( R.layout.activity_main );

        ZYJAsyncTask zyjAsyncTask = new ZYJAsyncTask() ;
        zyjAsyncTask.setCallBackListener( new ZYJCallBack() {
            
            @Override
            public void start() {
                System.out.println("ssss开始了" ) ;
            }
            
            @Override
            public void progress(Integer progress) {
                System.out.println("ssss进度为: " + progress ) ;
            }
            
            @Override
            public void dataResult(String resultString) {
                System.out.println("ssss结果是:" + resultString  ) ;
            }
        });
        
        zyjAsyncTask.execute( "" ) ;
    }
}


4、运行结果

ssss开始了
ssss进度为: 10
ssss进度为: 20
ssss进度为: 50
ssss进度为: 100

ssss结果是:哈哈哈,操作完成了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值