Andrio studio 学习 之 BroadCastReceiver

Android Studio中BroadcastReceiver使用:系统事件监听 在Android开发中,我们经常需要感知系统或其他应用的“动态”:比如用户手机电量只剩10%时提醒保存数据,网络从WiFi切到移动数据时调整资源加载策略,甚至手机时间变化时更新界面显示……这些需求都需要一个“系统事件监听员”——BroadcastReceiver(广播接收器)。本文将聚焦系统事件监听场景,覆盖BroadcastReceiver的核心概念、注册方式、实战操作及常见问题。本文将按照“概念→原理→实战→避坑”的逻辑展开:先用生活案例解释BroadcastReceiver的本质; 阅读详情
BroadCast 广播
广播作用以及机制

其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段,
系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机,输入法改变等,
发生这些时间,系统都会发送广播,这个叫系统广播,每个APP都会收到,如果你想让你的应用在接收到
这个广播的时候做一些操作,比如:系统开机后,偷偷后台跑服务哈哈,这个时候你只需要为你的应用
注册一个用于监视开机的BroadcastReceiver,当接收到开机广播就做写偷偷摸摸的勾当~
当然我们也可以自己发广播,比如:接到服务端推送信息,用户在别处登录,然后应该强制用户下线回到
登陆界面,并提示在别处登录当然,这些等下都会写一个简单的示例帮大家了解广播给我们带来的好处.

项目中广播使用

BroadCastReceiver广播接受者,安卓四大组件之一

广播三要素: (1)广播发送者 : 发送广播 (2)广播接收者(调频): 用于接收广播 (3)要处理的事情 :处理广播的相关信息,
Intent有图对象 广播的使用场景:
(1)同一APP下多个组件之间传递数据(Activity/Fragment/Service之间传递数据) (2)2个APP之间传递数据
技能get点: (1)自定义广播接受者 (2)使用广播接受者进行电话拦截和短信拦截和系统电量的变化

广播生命周期

静态注册和动态注册的区别:假如说Activity是接受者: 动态注册: (1)广播会跟Activity的生命周期的结束而结束;
(2)自由的控制注册和取消,有很大的灵活性 静态注册:
(1)广播不会跟随Activity的生命周期的结束而结束,一直存在,即使应用程序关闭,也会被唤醒接受广播 (2)全局的广播

广播的分类

无序广播发送 (也叫标准广播)
有序广播发送

在这里插入图片描述

如何实现广播

1,先创建一个广播,写一个类继承BroadcastReceiver即可

package com.example.day12;

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      
    }
}

2,注册一个广播

静态广播注册

在这里插入图片描述
在清单文件中注册广播就是静态的

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    
    <!--我是一个广播-->
    <receiver
        android:name=".MyReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.feng.broad"></action>
        </intent-filter>
    </receiver>
	<!--广播结束-->
	
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
动态广播注册

在这里插入图片描述

package com.example.day12;

import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.day12.util.BroadcastConst;

import java.io.BufferedReader;
import java.io.FileFilter;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 private Button sendId;
 private  MyReceiver myReceiver;

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

     sendId = findViewById(R.id.send_id);
     sendId.setOnClickListener(this);
     //1,创建一个广播
     myReceiver = new MyReceiver();
     //添加广播过滤器
     IntentFilter intentFilter = new IntentFilter();
     //添加action
     intentFilter.addAction(BroadcastConst.ACTION);
     //注册
     registerReceiver(myReceiver,intentFilter);
 }

 @Override
 protected void onDestroy() {
     super.onDestroy();
     //注销广播
     unregisterReceiver(myReceiver);
 }
}

发送一个无序广播

 Intent intent = new Intent();
 intent.setAction("com.feng.broad");
 Bundle bundle = new Bundle();
 bundle.putInt("msg",123);
 intent.putExtras(bundle);
 sendBroadcast(intent);

发送一个有序广播

 Intent intent1 = new Intent();
 intent1.setAction("com.feng.broad");
 //第一个参数是intent 二是权限名.
 sendOrderedBroadcast(intent1,null);

完整的代码如下
1,清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.day12">

   <application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:roundIcon="@mipmap/ic_launcher_round"
       android:supportsRtl="true"
       android:theme="@style/AppTheme">
       <receiver
           android:name=".MyReceiver2"
           android:enabled="true"
           android:exported="true">
           <intent-filter android:priority="1000">
               <action android:name="com.feng.broad"></action>
           </intent-filter>

       </receiver>
       <receiver
           android:name=".MyReceiver"
           android:enabled="true"
           android:exported="true">
           <intent-filter android:priority="900">
               <action android:name="com.feng.broad" />
           </intent-filter>
       </receiver>

       <activity android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>

</manifest>

java代码

package com.example.day12;

import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.day12.util.BroadcastConst;

import java.io.BufferedReader;
import java.io.FileFilter;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button sendId;
    private  MyReceiver myReceiver;
    private Button sendOrderId;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        sendOrderId = findViewById(R.id.send_order_id);
        sendOrderId.setOnClickListener(this);
        sendId = findViewById(R.id.send_id);
        sendId.setOnClickListener(this);

    //1,创建一个广播
//        myReceiver = new MyReceiver();
//        //添加广播过滤器
//        IntentFilter intentFilter = new IntentFilter();
//        //添加action
//        intentFilter.addAction(BroadcastConst.ACTION);
//        //注册
//        registerReceiver(myReceiver,intentFilter);


    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
            case R.id.send_id:
                Intent intent = new Intent();
                intent.setAction("com.feng.broad");
                Bundle bundle = new Bundle();
                bundle.putInt("msg",123);
                intent.putExtras(bundle);
                sendBroadcast(intent);
                break;

            case R.id.send_order_id:
                Intent intent1 = new Intent();
                intent1.setAction("com.feng.broad");
                sendOrderedBroadcast(intent1,null);
                break;

            default:
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //注销广播
        unregisterReceiver(myReceiver);
    }
}

3,第一个广播

package com.example.day12;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.example.day12.util.BroadcastConst;

public class MyReceiver extends BroadcastReceiver {

   private static final String TAG = "MyReceiver";
   @Override
   public void onReceive(Context context, Intent intent) {
       //TODO 1:获取action
       String action = intent.getAction();
       if(BroadcastConst.ACTION.equals(action)){
//            Bundle extras = intent.getExtras();
//            int msg = extras.getInt("msg");
           Log.i(TAG, "onReceive: ");
       }
   }
}

第二个广播

package com.example.day12;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver2 extends BroadcastReceiver {
   private static final String TAG = "MyReceiver2";
   @Override
   public void onReceive(Context context, Intent intent) {
       String action = intent.getAction();
       if(action.equals("com.feng.broad")){

           Log.i(TAG, "onReceive: +++");
           //判断是不是有序广播
           if(isOrderedBroadcast()){
           //中断一个广播
               abortBroadcast();
           }
       }
   }
}
系统广播

安卓常用系统广播 https://blog.youkuaiyun.com/cc_want/article/details/82344899

接收系统广播

系统在某些时候会发送相应的系统广播,下面我们就来让我们的APP接收系统广播,
接收之前,还需要为我们的APP注册广播接收器哦!而注册的方法又分为以下两种:动态与静态!

静态接收系统锁屏广播
package com.example.day12;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class ScreenReceiver extends BroadcastReceiver {
   private static final String TAG = "ScreenReceiver";
   @Override
   public void onReceive(Context context, Intent intent) {
       Log.i(TAG, "onReceive: ------");
       String action = intent.getAction();
       if(Intent.ACTION_SCREEN_ON.equals(action)){ //不能用
           Log.i(TAG, "onReceive: 亮了");
       }else if(Intent.ACTION_SCREEN_OFF.equals(action)){//不能用
           Log.i(TAG, "onReceive: 暗了");
       }else if (Intent.ACTION_USER_PRESENT.equals(action)){
           Log.i(TAG, "onReceive: 唤醒了");
       }else if(Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)){
           Log.i(TAG, "onReceive: 飞行了");
       }
   }
}

清单文件中注册

<receiver
           android:name=".ScreenReceiver"
           android:enabled="true"
           android:exported="true">
           <intent-filter android:priority="1000">
               <action android:name="android.intent.action.SCREEN_ON"></action>
               <action android:name="android.intent.action.SCREEN_OFF"></action>
               <action android:name="android.intent.action.USER_PRESENT"></action>
               <action android:name="android.intent.action.AIRPLANE_MODE"></action>
           </intent-filter>
       </receiver>
使用注意事项

不要在广播里添加过多逻辑或者进行任何耗时操作,因为在广播中是不允许开辟线程的, 当onReceiver()方法运行较长时间(超过10秒)还没有结束的话,那么程序会报错(ANR), 广播更多的时候扮演的是一个打开其他组件的角色,比如启动Service,Notification提示, Activity等!

自定义广播

在这里插入图片描述

Android开发之BroadcastReceiver用法实例分析 本文实例讲述了Android开发中BroadcastReceiver用法。分享给大家供大家参考。具体分析如下: 在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制。 Braodcast Receiver顾名思义就是广播接收器,它和事件处理机制类似,但是事件处理机制是程序组件级别的(比如:按钮的单击事件),而广播事件处理机制是系统级别的。我们可以用Intent来启动一个组件,也可以用sendBroadcast()方法发起一个系统级别的事件广播来传递消息。我们同样可以在自己的应用程序中实现Broadcast Receiver来监听和响应广播的Inten 立即下载

相关推荐

飞书多维表格+影刀RPA:我如何用3个指令搞定每周的销售数据自动汇总(附完整配置截图)

本文详细介绍了如何利用飞书多维表格和影刀RPA实现销售数据的自动化汇总,通过三个核心指令(建立链接、列出记录、更新记录)简化繁琐的手工操作。文章包含完整的配置截图和实战指南,帮助用户快速部署自动化流程,提升工作效率。

weixin_29273849的博客 285

Android 广播使用详解(Broadcast Receivers)

如果你想要应用程序中生成并发送自定义意图,你需要在活动类中通过sendBroadcast()来创建并发送这些意图。如果你使用sendStickyBroadcast(Intent)方法,则意图是持久的(sticky),这意味着你发出的意图在广播完成后一直保持着。com.runoob.CUSTOM_INTENT的意图可以像之前我们注册系统产生的意图一样被注册。</action>

it_xushixiong的博客 1999

CS224W图神经网络实战:如何用Motifs和Graphlets分析社交网络结构?

本文基于斯坦福CS224W课程,深入探讨了如何利用网络模体(Motifs)和图元(Graphlets)分析社交网络的微观结构。通过实战代码演示,文章介绍了如何识别具有统计显著性的关键连接模式,计算节点的图元度向量以刻画局部拓扑特征,并将这些结构洞见应用于社区发现、影响力分析及图神经网络的节点特征工程,从而提升模型在虚假账号检测等任务中的性能。

2w3e4r5t6y的博客 911

【15】应用开发——Broadcast广播机制

Android的广播机制是观察者模式在Android系统中的一种实际应用,它允许应用程序在接收到特定的广播后执行某些操作。其中,发送广播是通过Intent来实现的,接收广播是通过BroadcastReceiver广播接收器来实现的。Android广播的类型有两种,他们分别是:①标准广播 ②有序广播。

熊熊饲养员的优快云! 2301

OpenCv案例(七): 基于OpenCvSharp计算图像的清晰度(自动对焦)

自动对焦,其实是对相机成像的清晰值得计算,若对焦不清晰,成像的清晰度低,视觉效果模糊。若是在工业检测行业,对焦不准确,可能会造成严重后果;对焦准确的图像,其清晰度高,对比度鲜明,层次明显。

qq_37835727的博客 7114

五大经典遥感数据集对比:LoveDA、Potsdam、Toronto、Vaihingen、Massachusetts Roads选哪个?

本文深度对比了LoveDA、Potsdam、Vaihingen、Toronto和Massachusetts Roads五大经典遥感数据集。针对城市监测、道路提取、土地分类等不同任务,从分辨率、标注质量、数据规模及场景多样性等核心维度进行分析,为研究者根据项目目标、硬件条件与应用场景选择最合适的遥感数据集提供决策指南。

weixin_29057065的博客 237

Android基础——Broadcast和Broadcast Receiver

Broadcast和Broadcast ReceiverBroadcast二级目录三级目录 Broadcast 二级目录 三级目录

松仔Log的博客 1113

Delta并联机构运动学正逆解:从理论建模到Matlab实战

本文深入解析了Delta并联机构运动学正逆解的核心原理与实战方法。通过几何建模,清晰阐述了其“逆解简单、正解复杂”的特性,并详细推导了基于一元二次方程的逆解解析算法与采用牛顿-拉弗森迭代法的正解数值算法。文章结合完整的Matlab代码实例,从符号推导到数值求解,提供了从理论到实践的完整实现路径,助力机器人开发者掌握Delta并联机构的运动学分析。

weixin_29096377的博客 433

Android之BroadcastReceiver使用

BroadcastReceiver(广播接收器),这种组件本质上就是一个全局监听器,用于监听系统全局的广播消息。BroadcastReceiver 用于接收程序(包括用户开发的程序和系统内建的程序)所发出的BroadcastIntent,与应用程序启动Activity、 Service相同的是,程序启动BroadcastReceiver也只需要两步。创建需要启动的BroadcastReceiver的Intent。

qq_38056514的博客 2190

第8章 - 异构系统的协同控制及最优控制 --> 最优控制

异构系统的协同控制及最优控制 --> 协同控制

赵继超的笔记 2259

三极管、MOS管和晶体管综合对比——《器件手册--三极管、MOS管和晶体管》

IGBT(Insulated Gate Bipolar Transistor,绝缘栅双极型晶体管)是一种复合全控型电压驱动式功率半导体器件,结合了MOSFET的高输入阻抗、开关速度快的优点和双极型晶体管(BJT)的低导通压降、高电流密度的优点。例如,在NPN型三极管中,当基极电流增加时,集电极电流会按照一定的比例(放大倍数β)增加,这个比例通常在几十到几百之间。在NMOS管中,当栅极相对于源极的电压(Vgs)小于开启电压(Vth)时,漏极和源极之间没有导电沟道,电流无法通过,处于截止状态。

XU157303764的博客 2882

安卓开发--环境配置

安卓开发--环境配置

LQ_001的博客 1390

YOLO11改进 - 卷积Conv | StripBlockStripBlock大条带卷积块,通过顺序条带卷积捕获方向性长程依赖,强化高长宽比目标特征提取 | AAAI 2026

本文介绍了面向高纵横比目标检测的条带卷积模块——StripBlock,适用于遥感、船只、车道等细长结构目标的特征增强。该方法先通过 `5×5` 深度卷积提取局部空间信息,再利用 `1×19` 与 `19×1` 的正交长条卷积分别建模横向和纵向长程依赖,最后通过 `1×1` 卷积生成空间注意力权重,并以逐元素门控方式重标定输入特征。我们将 StripBlock 成功集成进 YOLO11,在检测头的多尺度特征层中引入条带式空间建模能力,从而增强模型对细长目标和复杂遥感场景的定位与识别效果。

魔改工程师的博客 234

Andrio studio学习 之 BroadCastReceiver运用

BroadCastReceiver运用 全局广播: 发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册。 默认发送的广播,就是全局广播,所有的App都可以请求接受 本地广播 发送的广播事件不被其他应用程序获取,也不能响应其他应用程序发送的广播事件。 本地...

Young_cloud的博客 385

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android Studio学习笔记——广播机制Broadcast

安卓每个应用程序都可以对自己感兴趣的广播进行注册,要该程序就只会接收到自己所关心的广播内容。这些广播可能是来自于系统的,也可能是来自于其他应用。安卓提供了一套完整的API,允许应用程序自由的发送和接收广播。安卓中的广播主要可以分为两种类型:标准广播和有序广播。标准广播Normal broadcasts是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播信息。他们之间没有任何先后顺序。这种广播效率会比较高。但同时也意味着他是无法被截断的。

我的的博客 3042

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

在Android Studio中如何实现广播(保姆级教程)

广播是一种用于应用程序之间或应用程序内部进行通信的机制。它允许一个应用程序发送一个广播消息,而其他应用程序可以注册接收这个广播消息并做出相应的处理。广播可以用于很多场景,比如在系统状态变化时通知应用程序、在应用程序之间传递数据、在应用程序内部进行通信等。广播是 Android 系统中一种用于应用组件之间进行通信的机制。广播可以分为普通广播和有序广播两种类型。普通广播是一种完全异步的广播方式,广播发出后,所有注册了相应动作的接收者都会接收到广播,但接收者之间没有顺序关系,无法拦截或修改广播。

qq_74706597的博客 1743

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

AndroidStudio-3.2.1(六)四大组件入门之BroadcastReceiver

本篇介绍Android四大组件之BroadcastReceiver基本知识和常用操作。 BroadcastReceiver用于应用程序内部或之间的消息广播与接收,然后在app内可以启动一个activity或serice来响应它们收到的信息。比如在自己的app内部注册一个BroadcastReceiver,用于侦听系统的一些消息,如低电量提示,短信电话提示、系统启动完毕事件等。需要注意的是Bro...

SHENCHEN1987的博客 794

Android Studio 四大组件之Broadcast

int FORWARD_RESULT_LAUNCH 启动标记:如果这个标记被设置,而且被一个已经存在的 activity 用来启动新的 activity,已有 activity 的回复目标 (reply target) 会被转移给新的 activity。和 ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。String DATA_ACTIVITY_STATE_CHANGED_ACTION 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。

qq_51598534的博客 1941

Android_Studio学习笔记-06(BroadcastReceiver的使用)

应用特定的事件通知。

2301_79306123的博客 479

Android Studio 学习记录-收发应用广播

本文介绍应用广播的几种收发形式,包括如何收发标准广播、如何收发有序广播、如何收发静态广播、如何监听定时管理器发出的系统闹钟广播等。

demon_dog的博客 3155

Andrio studio 学习 之 后台操作及IntentService

后台操作及IntentService IntentService介绍 IntentService 是service的子类, 已经现实了.onbind的方法.我们只要重写其中的 onHandleIntent即可. IntentService 是继承自 Service 并处理异步请求的一个类,在 IntentService 内有一个工作线程来处理耗时操作。 当任务执行完后,IntentServic...

Young_cloud的博客 601

Android Studio之BroadcastReceiver组件实现音乐播放器

这里写目录标题功能需求实现1.静态注册2.发送和接收(主要代码)实现效果源码下载 功能需求 利用BroadcastReceiver组件实现基本音乐播放器功能:上一曲下一曲切换、 播放、暂停,以及当前播放歌曲信息显示 实现 1.静态注册 (1)广播不会跟随Activity的生命周期的结束而结束,一直存在,即使应用程序关闭,也会被唤醒接受广播 (2)全局的广播 <?xml versio...

bdwdwks的博客 1108

android intent receiver,Android开发之Intent和BroadcastReceiver

Broadcast Receiver(广播接收者)可以用来监听Broadcast Intent。要使Broadcast Receiver能接收广播,就需要对其进行注册,既可以使用代码,也可以在应用程序的manifest文件中注册。无论怎么注册,都需要使用一个Intent Filter来自定它需要监听哪些Intent和数据。要创建一个新的Broadcast Receiver,需要扩展Broadcas...

weixin_39901358的博客 331

# 第二集 玩转Android-Studio之四大组件简介

Activity 之间通过 Intent 进行通信。Android 应用中每一个 Activity 都必须要在 AndroidManifest.xml 配置文件中声明,否则系统将不识别也不执行该Activity。在 android studio会自动生成,但 eclipse 需要自己手动添加(eclipse用的比较少了,目前主流都用android-studio)Activity 的中文意思是 活动,代表手机屏幕的一屏,或是平板电脑中的一个窗口,提供了和用户交互的可视化界面。

qq_31876537的博客 1483

BroadcastReceiver

在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。由于BroadcastReceiver本质上也是一种监听器,一次实现BroadcastReceiver只要重写其onReceive(Context context, Intent intent) 方法就可以了。 实现

xueAnother的博客 424

Android基础-broadcastreceiver(广播接收器)

什么是broadcastreceiver?     broadcastreceiver是一种在应用之间传输信息数据的一种机制。是Android四大组件之一。那么broadcastreceiver是如何实现应用间数据信息传递呢?先简单的描述一下,broadcastreceiver的名字已经说明它的原理,它就是一个广播。广播很容易理解,就是有人在广播里说了一条命令,然后一定范围内的人员听到了,判断是

u011291302的专栏 985
上一篇: Andrio studio 学习 之 ContentProvider 系统URI
下一篇: Andrio studio学习 之 BroadCastReceiver运用
Young_cloud
博客等级 码龄7年 18粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值