广播

1.什么是广播
安卓的广播机制就是说,在一些操作完成后,会发送广播,对应的程序会接收到这个广播,并做出相应的处理。
特点:发送方不关心接收方是否接收到数据,也不关心接收方如何处理数据。
三种广播类型:有序广播,无序广播,粘滞广播;
两种广播注册方式:静态广播,动态广播;
发出广播的代码:
建议,每一段接收方都单独建一个app

public class MainActivity extends AppCompatActivity {
private Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt=findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent("zaqqqq");//根据下面每个实例中对应的数据来改变参数
                 sendBroadcast(intent);//注册无序广播时用
          sendOrderedBroadcast(intent,null);//第二参数自定义权限;注册有序广播时用
            }
        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.zhang.guangbo.MainActivity">

    <Button
        android:id="@+id/bt"
        android:layout_width="match_parent"
        android:layout_height="100dp" />

</android.support.constraint.ConstraintLayout>

2.静态注册无序广播示例:
注册静态后,继承BroadcastReceiver类时,要单独建一个内部类,不然无法运行,我反正是这样的,可以自己试一试

 <receiver android:name=".bo"> //注册广播

         <intent-filter> 
         <action android:name="zaq" />          
         </intent-filter> 
         </receiver> 
public class bo extends BroadcastReceiver {//继承BroadcastReceiver类,
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "收到", Toast.LENGTH_SHORT).show();
    }
}

3.动态注册无序广播示例:

public class Main2Activity extends AppCompatActivity {
guang as;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        IntentFilter filter=new IntentFilter();
        filter.addAction("zaqq");
        as=new guang();
        registerReceiver(as,filter);//注册打开广播
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(as);//关闭广播
    }

    class guang extends BroadcastReceiver{


        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(Main2Activity.this, "接收", Toast.LENGTH_SHORT).show();
        }
    }
}

4.静态注册有序广播示例:

   <receiver android:name=".qw">
        <intent-filter>
            <action
                android:name="zaqqq"
                android:priority="100" />
        </intent-filter>
    </receiver>
public class qw extends BroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "第一", Toast.LENGTH_SHORT).show();
        abortBroadcast();
    }
}

5.动态注册有序广播示例:

public class Main3Activity extends AppCompatActivity {

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


        a=new asd();
        IntentFilter as=new IntentFilter();
        as.addAction("zaqqqq");
        as.setPriority(1000);//设置优先级
        registerReceiver(a,as);
    }


 @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(a);//关闭广播
    }


   public class asd extends BroadcastReceiver{


        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(Main3Activity.this, "第一", Toast.LENGTH_SHORT).show();

        }
    }
}

优先级范围:-1000~~1000;
同等优先级的情况下,会先接收动态广播,后接受静态广播;
动态广播不是常驻,Activity退出后,会被销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值