广播和数据库

广播接收器


动态注册广播接收器


创建一个类继承BroadcastReceiver
        intentFilter = new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        receiver = new NetworkChangeReceiver();
        registerReceiver(receiver,intentFilter);
  动态注册的必须在OnDestroy方法中注销广播接收器
静态注册
直接AndroidStudio创建
在Manifest文件中添加IntentFilter


发送标准广播
Intent intent = new Intent("......");
sendBroadcast(intent);


发送有序广播
sendOrderedBroadcast(intent,null); 第2个参数是权限相关的
在onreceive方法中调用abortBroadcast将截断广播


使用本地广播
LocalBroadcastManager = LocalBroadcastManager.getInstance(this);
发送和注册广播都通过LocalBroadcastManager来进行管理


本地广播不能用静态注册




将数据存储到文件中
Context类提供了一个openFileOutput()方法获得一个输出流
  private void save(String data){
        FileOutputStream outputStream=null;
        BufferedWriter writer = null;
        try{
            outputStream = openFileOutput("data",MODE_APPEND);
            writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            writer.write(data);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(writer!=null){
                    writer.close();
                }
                if(outputStream!=null){
                    outputStream.close();
                }
                
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        
    }
从文件中读取数据
private String load(){
        FileInputStream inputStream = null;
        BufferedReader reader = null;
        StringBuilder content = new StringBuilder();
        try{
            inputStream = openFileInput("data");
            reader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while ((line=reader.readLine())!=null){
                content.append(line);
            }




        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(reader!=null){
                    reader.close();
                }
                if(inputStream!=null){
                    inputStream.close();
                }


            }catch (Exception e){
                e.printStackTrace();
            }


        }
        return content.toString();
    }


将数据存储在sharedpreference中
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("name","张三");
        editor.putBoolean("married",false);
        editor.apply();
从sharedpreference中读取数据
 String name = preferences.getString("name","");
        boolean married = preferences.getBoolean("married",false);


SQLite数据库创建
创建一个类继承SQLiteOpenHelper
public class MyDatabase extends SQLiteOpenHelper {




    private Context mContext;
    public static final String CREATE_BOOK = "create table Book ( " +
            "id integer primary key autoincrement, " +
            "author text, " +
            "price real, " +
            "pages integer," +
            " name text)";
    public MyDatabase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {


        sqLiteDatabase.execSQL(CREATE_BOOK);
        Toast.makeText(mContext,"创建成功!",Toast.LENGTH_SHORT).show();
    }


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


    }
}
final MyDatabase database = new MyDatabase(MainActivity.this,"BookStore.db",null,1);
         create.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 database.getWritableDatabase();
             }
         });


   adb shell                generic_x86_64:/ # cd /data/data/com.example.broadcasttest/databases/
generic_x86_64:/data/data/com.example.broadcasttest/databases # ls
BookStore.db BookStore.db-journal
generic_x86_64:/data/data/com.example.broadcasttest/databases # sqlite3 BookStore.db
SQLite version 3.9.2 2015-11-02 18:31:45
Enter ".help" for usage hints.
sqlite> .table
Book              android_metadata
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE Book ( id integer primary key autoincrement, author text, price real, pages integer, name text);
sqlite>


更新数据库 创建新的表
 public static final String CREATE_CATEGORY ="create table Category ( " +
            "id integer primary key autoincrement," +
            "category_name text," +
            " category_code integer)";
    public MyDatabase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {


        sqLiteDatabase.execSQL(CREATE_BOOK);
        sqLiteDatabase.execSQL(CREATE_CATEGORY);
        Toast.makeText(mContext,"创建成功!",Toast.LENGTH_SHORT).show();
    }


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


        sqLiteDatabase.execSQL("drop table if exists Book");
        sqLiteDatabase.execSQL("drop table if exists Category");
        onCreate(sqLiteDatabase);
    }
}




final MyDatabase database = new MyDatabase(MainActivity.this,"BookStore.db",null,2);


插入数据
insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = database.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("name","红楼梦");
                values.put("price",22.5);
                values.put("pages",40);
                values.put("author","曹雪芹");
                db.insert("Book",null,values);
                values.clear();
                values.put("name","西游记");
                values.put("price",21.5);
                values.put("pages",43);
                values.put("author","吴承恩");
                db.insert("Book",null,values);




            }
        });
更新数据
 update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = database.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("author","张三");
                db.update("Book",values,"name = ?",new String[]{"西游记"});


            }
        });
查询数据
query.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = database.getReadableDatabase();
                Cursor cursor = db.query("Book",null,null,null,null,null,null);
                while (cursor.moveToNext()){
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    String author = cursor.getString(cursor.getColumnIndex("author"));
                    int pages = cursor.getInt(cursor.getColumnIndex("pages"));
                    double price = cursor.getDouble(cursor.getColumnIndex("price"));
                    Log.d("Main",name);
                    Log.d("Main",author);
                    Log.d("Main",pages+"");
                    Log.d("Main",price+"");


                }
                cursor.close();
            }
        });
删除数据
delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = database.getWritableDatabase();
                db.delete("Book","name = ?",new String[]{"西游记"});
            }
        });


使用LitePal
compile 'org.litepal.android:core:1.6.0'
main目录下创建assets文件夹
创建litepal.xml文件
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="BookStore"></dbname>
    <version value="1"></version>
    <list>
       <mapping class = "com.example.litepaltest.Book"></mapping>
    </list>


</litepal>




public class MyApplication extends Application {
   private Context context;
    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
        LitePal.initialize(context);
        
    }
    
}


继承DataSupport
public class Book extends DataSupport {
    private String name;
    private String author;
    private int pages;
    private double price;


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getAuthor() {
        return author;
    }


    public void setAuthor(String author) {
        this.author = author;
    }


    public int getPages() {
        return pages;
    }


    public void setPages(int pages) {
        this.pages = pages;
    }


    public double getPrice() {
        return price;
    }


    public void setPrice(double price) {
        this.price = price;
    }
}


创建数据库
create.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LitePal.getDatabase();
            }
        });
插入数据
insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Book book = new Book();
                book.setName("西游记");
                book.setAuthor("吴承恩");
                book.setPages(10);
                book.setPrice(20.1);
                book.save();


            }
        });
查询数据
query.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                List<Book> books= DataSupport.findAll(Book.class);
                for(Book book :books){


                    Log.d("Main", book.getName());
                    Log.d("Main", book.getAuthor());
                    Log.d("Main",book.getPages()+"");
                    Log.d("Main",book.getPrice()+"");




                }
            }
        });
更新数据
update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Book book = new Book();
                book.setAuthor("张三");
                book.updateAll("name = ?","西游记");
                book.setToDefault("pages");
                book.updateAll();


            }
        });
删除数据
delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DataSupport.deleteAll(Book.class,"name = ?","西游记");


            }
        });
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值