回调函数的使用

Posted 小筱萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回调函数的使用相关的知识,希望对你有一定的参考价值。

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( "" ) ;
    


以上是关于回调函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

什么是回调函数

什么是回调函数?回调函数适合在什么情况下使用?

Qt回调函数

怎么使用回调函数?

回调函数的使用

Promise对象的resolve回调函数和reject回调函数使用