Android学习记录(四)

1.Android中的广播机制是什么呢?

Android中的每个应用程序都可以对其意图之中的广播进行注册,确保了广播准确对接应用程序所需,同时Android还提供了一套完整的API,确保应用程序能够自由接受与发送广播,这就是广播机制;

2.广播有几种类型呢?

两种类型。如下:

(1)标准广播:(Normal broadcasts)完全异步执行的广播。即广播发出后,所有接收器几乎同时接收到广播消息,消息无先后顺序,并且无法截断;

(2)有序广播:(Ordered broadcasts)同步执行的广播。即广播发出后,同一时刻只会有一个广播接收器能接到该广播消息,只有该广播接收器中的逻辑结束后,广播才会继续传递。并且该种广播消息能够被截断;

3.注册广播有几种方式?

两种方式,如下:

(1)动态注册:在代码中注册,且注册后一定要取消注册。该种注册方式适合大型项目,因为取消注册能够有效防止溢出;

相关实例如下:

建立好相关项目后,先在MainActivity.java中代码如下:

package com.example.broadcasttest;

import androidx.appcompat.app.AppCompatActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intentFilter=new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        networkChangeReceiver=new NetworkChangeReceiver();
        registerReceiver(networkChangeReceiver,intentFilter);
    }
    @Override
    protected void onDestroy(){
        super.onDestroy();
        unregisterReceiver(networkChangeReceiver);
    }
    class NetworkChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectionManager = (ConnectivityManager)
                    getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isAvailable()) {
                Toast.makeText(context, "network is avaliable", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, "network is unavaliable", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

再在AndroidMani'fest.xml声明权限,代码如下:




    
    
        
            
                

                
            
        
    

最终实现了关闭与打开数据网络后都会有广播弹出,效果图如下:

Android学习记录(四)_第1张图片

(2)静态注册:在AndroidManifest.xml中注册,此种注册方式能够在程序未启动的情况下接收广播,但是相较于动态注册,该种方式会缺乏灵活性;

4.Android系统主要提供了几种方式用于简单地实现数据持久化功能?

三种方式,如下:

(1)文件存储:在Context类中的openFileOutput()方法可以用于将指定数据存储到指定文件中;

(2)SharedPreferences存储:不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这 个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,存储什么类型取出来仍是什么类型;

(3) SQLite数据库存储:SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很 少,通常只需要几百KB的内存就足够了,因而特别适合在移动设备上使用。SQLite不仅支持标 准的SQL语法,还遵循了数据库的ACID事务;

5.帮助类SQLiteOpenHelper中重要的实例方法是什么?

getReadableDatabase()和getWritableDatabase();

以上两者都可以打开或创建一个现有的数据库,并可以返回一个对数据库进行读写操作的对象。不同指出在于当数据库不可写入时,getReadableDatabase()会以只读方式打开数据库,而getWritableDatabase()方法则会出现异常;

6.对数据库中数据主要有几种操作?

CRUP。即添加、查找、删除、更新(增查删改);

你可能感兴趣的:(android,学习)