java.util.Random
- java.util.Random 中的随机实现算法是伪随机,即有规则的随机,它会在给定的种子(Seed)区间随机生成数字
- 种子相同的 Random 对象,相同次数产生的数字是完全相同的
- Random 中生成的随机数字都是均匀分布的,区间内部的数字生成的概率均等
实际测试
来看一段代码
InvocationTargetException 异常由 Method.invoke(obj, args…) 方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收
示例代码
1 | package me.redneno.test.reflect; |
ContentProvider 的作用是为不同的应用之间数据共享,提供统一的接口。安卓系统中应用内部的数据是对外隔离的,要想让其它应用能使用自己的数据(例如通讯录),这个时候就用到了 ContentProvider。
ContentProvider 通过 uri 来标识其它应用要访问的数据,通过 ContentResolver 的增、删、改、查方法实现对共享数据的操作。还可以通过注册 ContentObserver 来监听数据是否发生了变化来对应的刷新页面。
ContentProvider 是一个抽象类,如果我们需要开发自己的内容提供器我们就需要继承这个类并复写其方法,需要实现的主要方法如下:
方法 | 注释 |
---|---|
public boolean onCreate() | 在创建 ContentProvider 时使用 |
public Cursor query() | 用于查询指定 uri 的数据返回一个 Cursor |
public Uri insert() | 用于向指定 uri 的 ContentProvider 中添加数据 |
public int delete() | 用于删除指定 uri 的数据 |
public int update() | 用户更新指定 uri 的数据 |
public String getType() | 用于返回指定的 Uri 中的数据 MIME 类型 |
数据访问的方法 insert,delete 和 update 可以被多个线程同时调用,此时必须是线程安全的
本文会用到安卓的内容提供器 ContentProvider
1 | <uses-permission android:name="android.permission.READ_CONTACTS"/> |
安卓 7.0 以上还需要申请动态权限
1 | if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { |
1 | private void fetchAllContacts() { |
同上
1 | private void queryContact(String number){ |
Step 1. 创建 AlertDialog.Builder 对象
Step 2. 调用 setIcon() 设置图标,setTitle() 或 setCustomTitle() 设置标题
Step 3. 设置对话框的内容:setMessage() 还有其他方法来指定显示的内容
Step 4. 调用 setPositive/Negative/NeutralButton() 设置:确定,取消,中立按钮
Step 5. 调用 create() 方法创建这个对象,再调用 show() 方法将对话框显示出来
activity_main.xml
1 |
|
Update your browser to view this website correctly. Update my browser now