Android的存储 BroadCast Receiver广播

Android的存储

数据存储方法分为5种 :

  • SharedPreferences
  • 内部存储
  • 外部存储
  • SQLite
  • 网络连接

SharedPreferences简介

用于存放键值对 放及少数的数据

使用SharedPreferences步骤

数据的写入

1.获取SharedPreferences

2.借助Editor,向SharedPreferences中写入数据

3.写入数据 只能写入基本数据 不能写入复合型的数据(boolean ,float ,int ,long ,String )

4.提交数据

        String user ="root";
        String pwd ="123465";
        //1.获取SharedPreferences 参数1:名字 参数2MODE_PRIVATE 模式
        SharedPreferences sp =getSharedPreferences("loginfo",MODE_PRIVATE);
        //借助Editor 向SharedPreferences中写输入数据
        SharedPreferences.Editor editor=sp.edit();
        //写入数据 只能写入原始基本数据类型 不能写入复合型数的数据
        editor.putString("user",user);
        editor.putString("pwd",pwd);
        //4.提交数据
        editor.commit();

数据读取

1.获取SharedPreferences

2.获取数据

​ 根据key获取到值

        //数据的读取
        //1.获取SharedPreferences
        SharedPreferences sp1 =getSharedPreferences("loginfo",MODE_PRIVATE);
        //2.获取数据
        String sp_user =sp1.getString("user","");
        String sp_pwd =sp1.getString("pwd","");

        Toast.makeText(this, "账号"+sp_user+",密码"+sp_pwd, Toast.LENGTH_SHORT).show();

SQLite数据库

简介

sQLite简介
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这意味SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的sql数据库引擎。它是一个零配置的数据库,这意味
着与其他数据库不一样,您不需要在系统中配置。就像其他数据库, sQLite 引擎不是一个独立的进程, 可以按应用程序需求进行静态或着与其他数据库不一样,您不需要在系统中配置.就像其他数据库,sQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或
动态连接。SQLite 直接访问其存储文件。动态连接.SQLite直接访问其存储文件.

为什么要使用SQLite

●不需要一个单独的服务器进程或操作的系统(无服务器的)。(不需要一个单独的服务器进程或操作的系统(无服务器的)。
●SQLite 不需要配置,这意味着不需要安装或管理。SQLite不需要配置,这意味着不需要安装或管理.

●SQLite 是非常小的,是轻量级的。
●SQLite 是自给自足的,这意味着不需要任何外部的依赖。SQLite是自给自足的,这意味着不需要任何外部的依赖.

●SQLite 务完全兼容ACID的,允许从多个进程或线程安全访问。SQLite务完全兼容acid的,允许从多个进程或线程安全访问.

●sQLite 支持标准的大多数查询语言的功能。、

轻量兼容多端无需配置无外部依赖拥有简单易懂的API安全综合来看,即轻量兼容多端无需配置无外部依赖拥有简单易懂的api安全

创建数据库

在构造方法中创建数据库

1.需要先创建一个java的文件然后继承 SQLiteOpenHelper

public class DBLIte extends SQLiteOpenHelper { }

​ 借用Class,DBHelper 继承SQLiteOpenHelper

​ 实现两个抽象方法 onCreate() onUpgrade() 创建一个带参的构造方法

​ 在构造方法中 创建数据库

​ 在onCreate() 方法中,创建表和插入数据

构造方法中的四个参数是什么意思

参数含义参数1 (context)上下文 活动的参数2 (name)数据库的名称参数3 (factory)工厂模式参数4 (version)版本

public DBLIte(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
  public DBLIte(@Nullable Context context) {
        super(context,"userinfo.db" , null, 1);
    }

对表的增删改查(案例)

public class DBLIte extends SQLiteOpenHelper {

    public DBLIte(@Nullable Context context) {
        super(context,"userinfo.db" , null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //创建表
        //键一个 有ID项 user pwd
        sqLiteDatabase.execSQL("create table userinfo(id integer primary key,user text pwd text)");

        //向表内插入数据、
        //1.写SQL语句(推荐)
        sqLiteDatabase.execSQL("insert into userinfo values(1,'root','123456')");
        //2.SQLite特有的方法(不推荐)
        ContentValues cv =new ContentValues();
        cv.put("id",2);
        cv.put("user","admin");
        cv.put("pwd","00000");
        sqLiteDatabase.insert("userinfo",null,cv);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
执行 增、删、改的流程
  1. 获取数据库对象
  2. 执行动作
  3. 释放资源
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);

        //链接数据库
        DBLIte dblIte=new DBLIte(MainActivity4.this);
        //获取数据库对象
        SQLiteDatabase db = dblIte.getWritableDatabase();
        //执行动作  //删除语句
        String spl ="delete  from userinfo where  ?";
        db.execSQL(spl,new String[]{"1"});
        //获取结果
        Toast.makeText(MainActivity4.this, "执行成功", Toast.LENGTH_SHORT).show();

执行查询语句的流程
  1. 获取数据库对象
  2. 执行查询 将结果集放入游标内
  3. 取出结果
  4. 释放资源
   //查询操作
        //链接数据库
        DBLIte dblIte=new DBLIte(MainActivity4.this);
        //获取数据库对象
        SQLiteDatabase db = dblIte.getWritableDatabase();
        //执行查询动作
        String spl ="select * from userinfo where id=?";
        Cursor currency =db.rawQuery(spl,null);
        //取出结果
        List<usel> list =new ArrayList();
        while (currency.moveToNext()){
            Usel usel = new Usel();
            usel.setId(currency.getInt(0));
            usel.setUser(currency.getString(1));
            usel.setPwd(currency.getString(2));
            list.add(usel);
        }
        //&#x91CA;&#x653E;&#x8D44;&#x6E90;
        currency.close();
        db.close();
        //&#x67E5;&#x770B;&#x6570;&#x636E;&#x5E93;&#x7684;&#x503C;
        for (Usel usel:list) {
            Log.i("&#x4ECE;&#x6570;&#x636E;&#x5E93;&#x53D6;&#x503C;","id:"+usel.getId()+"&#xFF0C;&#x8D26;&#x53F7;&#xFF1A;"+usel.getUser()+",&#x5BC6;&#x7801;&#xFF1A;"+usel.getPwd());
        }
</usel>

BroadCast Receiver广播

BroadCast简介

BroadCast是四大组件之一 必须字清单文件(androidManifest.xml)里进行注册

是组件之间传播数据的一种机制

属性

1.广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁
2.广播接收者中不要做一些耗时的工作,否则会弹出Application No Response错误对话框
3.最好也不要在广播接收者中创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为了空进程,很容易被系统杀掉
4.耗时的较长的工作最好放在服务中完成广播接收器

例如APP中哪里用到了广播

​ 短信 电话 电量 网络

广播的接收器

标准广播

标准广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播的信息,因此他们之间没有任何的先后顺序可言。

创建

Android的存储 BroadCast Receiver广播

=
1.创建广播接受者

2.在AndroidManifest.xml中对广播接收者进行注册

3.发送广播

; 静态注册

谷歌在8.0后为了提高效率,删除了静态注册,防止关闭App后广播还在, 造成内存泄漏, 现在静态注册的广播需要指定包名!!! 直接在androidManifest.xml注册*

1.创建广播接受者

2.在AndroidManifest.xml中对广播接收者进行注册

3.发送广播

  <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="my"></action>
            </intent-filter>
        </receiver>
静态注册
案例
tb_button =findViewById(R.id.tb_button);

    tb_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent1 =new Intent();
            intent1.setAction("my");
            intent1.putExtra("info","&#x5566;&#x5566;&#x5566;");
            startActivity(intent1);
        }
    });
 @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyStativReceiver","&#x9759;&#x6001;&#x63A5;&#x53D7;&#x5230;&#x7684;&#x5185;&#x5BB9;&#x662F;&#xFF1A;"+intent.getStringExtra("info"));
    }
动态注册

使用java代码注册

 //&#x53D1;&#x9001;&#x7ED9;&#x52A8;&#x6001;&#x5E7F;&#x64AD;&#x63A5;&#x53D7;&#x8005;
        tb_button1 =findViewById(R.id.tb_button1);
        tb_button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view){
                Intent intent1 =new Intent();
                intent1.setAction("my");
                intent1.putExtra("info","&#x52A8;&#x6001;&#x5566;&#x5566;&#x5566;");
                startActivity(intent1);
            }
        });
        //&#x6CE8;&#x518C;&#x52A8;&#x6001;&#x5E7F;&#x64AD;&#x63A5;&#x53D7;&#x8005;
        myReceivers=new MyReceiver();
        IntentFilter intentFilter =new IntentFilter();
        intentFilter.addAction("my");
        registerReceiver(myReceivers,intentFilter);
    }
    class myReceivers extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("&#x52A8;&#x6001;&#x5E7F;&#x64AD;&#x63A5;&#x53D7;&#x8005;",intent.getStringExtra("info"));
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myReceivers);
    }

s extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("&#x52A8;&#x6001;&#x5E7F;&#x64AD;&#x63A5;&#x53D7;&#x8005;",intent.getStringExtra("info"));
    }
}
@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(myReceivers);
}

### &#x6709;&#x5E8F;&#x5E7F;&#x64AD;

Original: https://blog.csdn.net/weixin_58171704/article/details/125960991
Author: sirwz
Title: Android的存储 BroadCast Receiver广播

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817512/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 大讲台大数据 视频

    大数据 2023年11月13日
    050
  • Hadoop-MapReduce

    Hadoop-MapReduce 一、MapReduce设计理念 map—>映射 reduce—>归纳 mapreduce必须构建在hdfs之上…

    大数据 2023年6月2日
    073
  • 图像处理(8) : 模板匹配

    模板匹配指的是通过模板图像与测试图像之间的比较,找到测试图像上与模板图像相似的部分,这是通过计算模板图像与测试图像中目标的相似度来实现的,可以快速地在测试图像中定位出预定义的目标。…

    大数据 2023年5月26日
    081
  • 开源直播课丨高效稳定易用的数据集成框架——ChunJun类加载原理与实现

    一、直播介绍 前几期,我们为大家分享了ChunJun的数据还原、Hive事务表及传输模块的一些内容,本期我们为大家分享ChunJun类加载原理与实现。 本次直播我们将从Java 类…

    大数据 2023年6月2日
    097
  • 部署zabbix监控服务

    部署zabbix监控服务 部署zabbix监控服务 什么是zabbix zabbix的特点 zabbix的配置文件 部署zabbix zabbix服务端安装 准备工作 数据库操作 …

    大数据 2023年5月26日
    068
  • [数据仓库]kettle——入门操作(文本文件输入流)

    文本文件有文件、内容、错误处理、过滤、字段和Additional output fields等几个页签,主要说一下内容和过滤两个页签。 内容,如下 1)文件类型,保持默认csv即可…

    大数据 2023年5月25日
    095
  • vs2010中实现sqlite数据库的增删改查

    文章目录 一、下载所需安装包 二、生成sqlite3.lib文件并添加到vs中 三、创建数据库 四、测试样例: ; 一、下载所需安装包 官网地址:http://www.sqlite…

    大数据 2023年11月11日
    057
  • 【Hadoop学习笔记】(三)——Sqoop

    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop…

    大数据 2023年11月13日
    043
  • 洛谷-P1035 级数求和

    洛谷-P1035 级数求和 原创 Jack魏2022-06-22 10:30:57博主文章分类:算法竞赛 ©著作权 文章标签 洛谷 P1035 级数求和 java 数据 文章分类 …

    大数据 2023年5月26日
    092
  • Hadoop生态之Yarn

    由于博主最近在忙着期末考试捏所以一直没有更新博客,昨天也是刚考完试火急火燎的赶到了公司,博主在这里劝诫大家一定要多方位核查自己即将去的公司,并且该问的问清楚了,太难了。。。 在生活…

    大数据 2023年11月13日
    035
  • ThreadLocal与线程控制

    一、ThreadLocal原理分析 1、概念 ThreadLocal类并不是用来解决多线程环境下的共享变量问题,而是用来提供线程内部的共享变量。在多线程环境下,可以保证各个线程之间…

    大数据 2023年6月3日
    076
  • greenplum分布键的hash值计算分析

    greenplum 是一个 MPP 架构的数据库,由一个 master 和多个 segment 组成(还可选配置一个 standby master),其数据会根据设置的分布策略分布…

    大数据 2023年6月3日
    066
  • 给linux(centos)操作系统设置主机名的几种方式

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 一、前言 就是我们需要集群部署hadoop,Flink时,写ip地址太长了,然后大家想的就是能不能用比如:node1,node2…

    大数据 2023年5月27日
    0158
  • 大数据项目 — 电商数仓(一)

    这个项目实在数据采集基础使用的,需要提前复习之前学的东西,否则的话就是很难继续学习.详见博客数据项目一 —数据采集项目. 大数据项目 — 数据采集项目_Yl…

    大数据 2023年11月12日
    059
  • Docker from指令

    FROM指明当前的镜像基于哪个镜像构建dockerfile 必须以 FROM 开头,除了 ARG 命令可以在 FROM 前面FROM [–platform= 小栗子FR…

    大数据 2023年5月28日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球