GL_BOOK_3

Chapter 4 碎片

1 简单用法

   <Button 
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="click"
        />

    <FrameLayout 
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:id="@+id/right"        
        >
        <fragment 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:name="com.asen.demo.RightFragment"
            />
    </FrameLayout>

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
            if (flag) {
                RightFragmentNew f = new RightFragmentNew();
                    transaction.replace(R.id.right, f);
                    transaction.addToBackStack(null);
                    transaction.commit();
                    flag =false;
                }else {
                    RightFragment f = new RightFragment();
                    transaction.replace(R.id.right, f);
                    transaction.addToBackStack(null);
                    transaction.commit();
                    flag = true;
                }

transaction.addToBackStack(null); 将一个事务添加到返回栈中

2 xxFragment f = getFragmentManager.findFragmentByID(R.id.xxfragment)

3 onAttach onCreateView onActivityCreate ondestroyView ondetach

4 使用限定符Qualifiers
区别是 大屏 (平板) 还是 手机 加载 哪个布局文件
layout-large 文件夹 同名.xml 布局文件
使用 最小宽度限定符
layout-sw600dp 文件夹 最小宽度限定符 允许我们对要适配的屏幕指定一个最小值以dp为单位 大于这个值就加载这个布局 小于这个值就加载另一个布局了

Chapter 5 广播

1 标准广播 有序广播 系统广播 本地广播

标准广播 一个完全异步执行的广播 所有接收器几乎同时收到 没有先后顺序可言 效率比较高 但是无法被截获
有序广播 一个同步执行的广播 根据优先级 先后顺序接受 先接受者 有决定是否截留的逻辑处理选择

2 动态注册 静态注册

IntentFilter filter  = new IntentFilter();
        filter.addAction("android.net.connn.CONNECTIVITY_CHANG");
        registerReceiver(receiver, filter);
        unregisterReceiver(receiver);
  <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="21" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

静态注册 和 动态注册的不同 在于
动态注册 比较灵活 可以自由的控制 注册和注销 缺点是必须等待程序启动执行才可以接受广播
静态注册没有动态注册那么灵活 但是 在程序未启动时就可以接受 一般用于接受系统广播 (开机启动)
一般我们注册的action 都对应 相应的权限 不要忘记在 manifest.xml中进行配置

3 发送有序广播 sendOrderedBroadcast(intent, receiverPermission);
sendOrderedBroadcast(intent, null);

 <receiver 
            android:name=".MyBroadCastReceiver"
            >
            <intent-filter 
                android:priority="100"
                >
                <action android:name="com.haha.mybroad"/>
            </intent-filter>
        </receiver>

自定义的广播接收器 的优先级 定为 100 保证在其他广播接收器之前收到


    @Override
    public void onReceive(Context context, Intent intent) {
        abortBroadcast();//截留
    }

4 本地广播
上述的标准广播 和 有序广播 以及 系统广播 都是系统全局广播 广播是一种跨进程通信机制 所以其他程序理论上也能收到该条广播的可能 存在安全性问题
本地广播只能在应用程序内部进行传递
唯一不同的是 引入了 LocalBroadcastManager 进行 注册 发送 注销

    LocalBroadcastManager.getInstance(this).registerReceiver(xxReceiver, intentFilter);
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
        LocalBroadcastManager.getInstance(this).unregisterReceiver(xxReceiver);

5 应用 强制下线 由于可能处于不同的界面时 被踢下线 可以通过广播的形式 通知 接受者在 receive 方法里 进行下线的逻辑处理 弹窗 销毁 全部activity等

@Override
    public void onReceive(Context context, Intent intent) {
        AlertDialog.Builder builder  = new AlertDialog.Builder(context);
        builder.setTitle("this is title");
        builder.setMessage("this is message ");
        builder.setCancelable(false);
        builder.setPositiveButton("ok", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("haha", "bingo");
            }
        });
        AlertDialog dialog  = builder.create();
        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        dialog.show();
    }

对话框的类型设置为 TYPE_SYSTEM_ALERT 不然不会再广播里弹出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值