android开发视频教材笔记:第一季 14--19课

来源:互联网 发布:门面招牌设计软件 编辑:程序博客网 时间:2024/06/11 15:48
第14课
------------------------------------------
handler的使用(一)

线程的实现方法一般有两种,1是继承Thread类,2是实现Runnable接口类
在第二中方法中可以用内部匿名类实现,如下
Runnable updateThread = new Runnable[]{
public void run(){...}
}

等价于
Class UpdateThread implement Runnable{
public void run(){...}
}
UpdateThread updateThread = new UpdateThread();

Handler异步消息处理:
Handler handler = new Handler();//声明一个Handler对象。
handler.post(updateThread);//将要执行的线程对象加入消息队列里面准备执行。
handler.postDelayed(updateThread,3000);//过3000毫秒以后将要执行的线程添加到消息队列里了。

ProgressBar水平样式的设置
style="?android:attr/progressBarStyleHorizontal"


第15课
------------------------------------------
handler的使用(二)

1.Handler与线程
Handler执行的线程跟Activity所在的线程是同一个线程中执行的。
这个可以通过打印Thread.currentThread.getId();
Thread.currentThread.getName();进行验证。

Handler对线程的处理并不是真正的启动了一个新的线程,而是在原来的线程中进行处理的
没有调用start()方法,而是直接调用的run()方法。

第16课
------------------------------------------
SQLite关系型数据库使用方法

1.数据库的创建:
创建一个DatabaseHelper的对象
DatabaseHelper dbHelper = new DatabaseHelper(this,"database_name");
然后执行:
SQLiteDatabase db = dbHelper.getReadableDatabase();
获得数据库。
在数据库创建的时候,就会去执行DatabaseHelper里的
onCreat();回调函数。

2.数据库版本更新:
创建一个DatabaseHelper的对象,参数中填入笔创建时候默认版本号增加了的版本号参数。
DatabaseHelper dbHelper = new DatabaseHelper(this,"database_name",2);
然后执行:
SQLiteDatabase db = dbHelper.getReadableDatabase();
获得数据库。
在数据库版本号有更新的时候,就会去调用DatabaseHelper里的
onUpgrad();回调函数。

3.插入:
先生成一个ContentValues对象
ContentValues values = new ContentValues();
向该对象中插入键值对,其中键是列名,值是希望出入到这一列的值
(在DatabaseHelper的onCreat()方法中创建里基本的表结构,包含id和name)
values.put("id",1);
values.put("name","zhangsan");
创建一个DatabaseHelper的对象
DatabaseHelper dbHelper = new DatabaseHelper(this,"database_name");
然后执行:
SQLiteDatabase db = dbHelper.getWriteableDatabase();
获得可写数据库。
最后
db.insert("table_name",null,values);
向数据库的表中插入数据

4.更新:
得到一个可写的SQLiteDatabase对象
DatabaseHelper dbHelper = new DatabaseHelper(this,"database_name");
SQLiteDatabase db = dbHelper.getWriteableDatabase();
创建一个ContentValuse对象
ContentValues valuse = new ContentValues();
valuse.put("name","sanFeng");
最后
db.update("table_name",valuse,"id=?",new String[]{"1"});
把id为1的那条记录的name更新为sanFeng。其中?叫做占位符,如果查找的条件有两个,那在
后面对应的String[]数组里面就有两个字符串,分别分配给两个占位符。
(SQL语句中的更新语句
update table_name XXX=XXX where XXX=XXX)。

5.查找:
先得到一个可读的SQLiteDatabase对象
DatabaseHelper dbHelper = new DatabaseHelper(this,"database_name");
SQLiteDatabase db = dbHelper.getReadableDatabase();
db的query()方法返回一个Cursor
Cursor cursor = db.query("table_name",new String[]{"id","name"/*要查询那些列*/},
"id=?",new String[]{"1"},null,null,null/*分组,分组结果,查询结果排序*/);
如何得到查询结果呢?
while(cursor.moveToNext){
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.d("a","query ----> "+name);
}

创建DatabaseHelper继承自SQLiteOpenHelper
在其中必须有其构造函数,调用父类的构造函数
public DatabaseHelper(Context context,String name,CursorFactory factory,int version){
super(context,name,null,version);
}
还有两个回调函数
public void onCreat(SQLiteDatabase db){
//当第一个调用db.getReadableDatabase();或者db.getWriteableDatebase();的时候调用。
//创建基本的表结构。
db.execSQL("creat table table_name(id int, name varchar(20))");
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
//当数据库版本更新的时候自动调用的。
}

第17课
------------------------------------------
程序调试

DDMS(Dalvik Debug Monitor Service) --> LogCat

第18课
------------------------------------------
文件下载
1.使用HTTP协议下载文件
2.将下载的文件写入SDcard

文件下载步骤:
1.创建一个HeepURLConnection对象
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
2.获得一个InputStream对象
urlConn.getInputStream();
3.访问网络的权限
android.permission.INTERNET

访问SD卡
1.得到当前设备SD卡的目录
Environment.getExternalStorageDirectory();
2.访问SD卡的权限
android.permission.WRITE_EXTERNAL_STORAGE
/*******************************************************************/
新建一个HttpDownloader类
public class HttpDownloader{
    private URL url = null;
//下载文本文件    
//1.创建一个URL对象
//2.通过URL对象,创建一个HttpURLConnection对象
//3.得到InputStream
//4.从InputStream当中读取数据
public String download(String urlStr){
StringBuffer sb = new StringBuffer();
String line = null;
BufferReader buffer = null;
try{
    //创建一个URL对象
    url = new URL(urlString);
    //创建一个Http连接
    HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
    //使用IO流读取数据
    buffer = new BufferReader(
        new InputStreamReader(urlConn.getInputStream()));
    while((line = buffer.readLine();) != null){
    sb.append(line);
    }
} catch(Exception e){e.printStackTracs();
}finally{try{buffer.close();}catch(Exception e){e.printStackTracs();}}
return sb.toString();
}
}

第19课
------------------------------------------
Content Provider初步
1.Content Provider基本概念
2.Uri
3.ContentProvider的实现方法

Content Provider基本概念
1.ContentProvider提供了存储和获取数据提供了同一的接口。
2.使用ContentProvider可以在不同的应用程序之间共享数据。
3.Android为常见的一些数据提供了ContentPrivider.
Content Provider使用表的形式来组织数据。

URI
1.每个Content Provider都拥有一个统一的URI,这个URI用于表示这个ContentProvider
所提供的数据。
2.Android所提供的ContentProvider都存放在android.provider包当中。

ContentProvider所提供的函数:
1.query();//查询
2.insert();
3.update();
4.delete();
5.getType();//得到数据类型
6.onCreate();//创建时的回调函数

实现ContentProvider的过程(这个很少用的)
1.定义一个CONTENT_URI
2.定义一个类,继承ContentProvider
3.实现query,insert,update,delete,getType,onCreate方法。
4.在AndroidManifest.xml



原创粉丝点击