android进阶-回调

回调(Callback)是一种常见的编程模式,用于处理异步事件或信息传递。通过回调,一个对象(通常是一个事件的发起者或处理者)可以将某些任务或行为的执行通知给另一个对象

常见例子:

事件监听器:这是回调的一种典型应用。例如,OnClickListener 用于监听按钮点击事件,OnTouchListener 用于监听触摸事件等。开发者可以通过实现这些接口并设置监听器来响应不同的用户界面事件。
异步任务处理:AsyncTask 是 Android 中处理异步任务的一种机制,它允许执行后台操作并在主线程中更新UI。虽然现在推荐使用 Kotlin 的协程来处理异步操作,AsyncTask 的设计原理仍是基于回调模式,通过doInBackground和onPostExecute等方法的实现来分别处理后台任务和任务完成后的UI更新。--服务的那个方法
网络请求回调:在进行网络请求时(如使用 Retrofit、OkHttp),回调用于处理请求成功或失败后的操作。开发者可以定义成功或错误的回调方法,以便在收到响应时更新UI或处理数据。
权限请求回调:从 Android 6.0(API 级别 23)开始,应用需要请求运行时权限。requestPermissions方法用于请求权限,而onRequestPermissionsResult回调方法用于接收权限请求的结果,并据此执行相应的操作。
广播接收者(BroadcastReceiver):用于监听和响应来自其他应用或系统的广播消息。当接收到广播时,onReceive方法会被回调,允许开发者在此方法中执行相应的操作。
服务连接(ServiceConnection):当组件想要绑定到服务时(使用bindService),可以通过实现ServiceConnection接口并实现其onServiceConnected和onServiceDisconnected方法来管理与服务的连接和断开。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_38788068/article/details/136638849

回调的主体思想是把接口对象作为函数的参数传递进去。

package com.example.myapplication;

public class Worker {

    public interface Callback {
        void onResult(String result);
    } //内部类

    private Callback callback;


    public Worker(Callback callback) {
        this.callback = callback;
    }  //把接口对象作为参数传递。构造函数

    public void doWork() {
        // 假设这是一些耗时的操作
        String result = "处理结果";
        // 在合适的时候调用回调方法
        callback.onResult(result);
    } //必须得有这个方法。
}

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.widget.Button;

import com.example.myapplication.Worker;

public class MainActivity extends AppCompatActivity {
    private Worker worker;

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



        worker = new Worker(new Worker.Callback() {
            @Override
            public void onResult(String result) {
                Log.d("Callback33", "结果: " + result);
            }
        });



        // 开始工作
         worker.doWork();//要去调用才行
    }
}

也就是说需要worker.dowork工作完毕并且准备好了结果,才会调用onResult方法!,而相对于点击事件而言

radioButton.setOnClickListener(new View.OnClickListener() 

  • 处理异步请求的返回值
  • 同一个事件有不同的处理方法

和这个例子很类似,通过view.java中的接口匿名和函数来处理。只是少了一个doWork,个人怀疑是在其他的地方,处理复杂的触摸、点击等操作,然后处理完后发生点击,回调回Onclick方法中,然后就能处理其他事情了

重要理解:在这个例子中,Worker 类接受一个实现了 Callback 接口的对象作为参数。当 Worker 类的 doWork 方法执行完毕并准备好提供结果时,它会调用 onResult 方法,并将结果传递给实现了 Callback 接口的类。这样,MainActivity 就可以在 onResult 方法中接收并处理结果了。

相关推荐

  1. android-

    2024-05-13 19:28:08       12 阅读
  2. Android学习

    2024-05-13 19:28:08       22 阅读
  3. uniapp调用原生android插件传递函数

    2024-05-13 19:28:08       21 阅读
  4. SQL理论篇(一):数据库的

    2024-05-13 19:28:08       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 19:28:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 19:28:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 19:28:08       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 19:28:08       20 阅读

热门阅读

  1. Python 正则表达式(一)

    2024-05-13 19:28:08       11 阅读
  2. KAN网络

    KAN网络

    2024-05-13 19:28:08      11 阅读
  3. 微调大模型学习记录

    2024-05-13 19:28:08       15 阅读
  4. MFC--CCreateContext结构体

    2024-05-13 19:28:08       9 阅读
  5. 三种基本排序-冒泡,选择,二分

    2024-05-13 19:28:08       10 阅读
  6. MySQL中所有数据类型

    2024-05-13 19:28:08       9 阅读
  7. MongoDB聚合运算符:$topN

    2024-05-13 19:28:08       11 阅读
  8. stylus详解与引入

    2024-05-13 19:28:08       13 阅读
  9. 深度学习学习日记(5.6)

    2024-05-13 19:28:08       11 阅读
  10. 初级银行从业资格证知识点(十)

    2024-05-13 19:28:08       11 阅读
  11. 升级WSL Ubuntu内核从5.10到5.15

    2024-05-13 19:28:08       17 阅读
  12. Flink面试整理-Flink的配置管理包含哪些?

    2024-05-13 19:28:08       14 阅读
  13. Python Pandas 数据分析快速入门

    2024-05-13 19:28:08       12 阅读