异步操作
主线程:中需要做的是调用异步操作的类函数;
调用execute 方法
onPreExecute()执行在UI线程中
doInBackground(Integer... param)
不运行在UI线程当中,不能对UI当中的控件进行设置和修改;
该方法中想要修改UI线程 调用 publishProgress 都会触发 onProgressUpdate()方法;
最后会将结果传递到onPostExecute
onPostExecute:在 doInBackground 方法结束之后再运行,并且运行在UI线程当中
异步线程:
在类函数中需要继承 AsyncTask<Void, Void, Void>;
三个参数第一个是定义doInBackgound()的参数类型,
第二个参数是定义 onProgressUpdate()的参数类型
第三个参数是定义了 doInBackgound 的返回值类型,以及 onPostExecute()参数类型
重写 doInBackground(Void... arg0){ 在里面执行异步操作 };
“...”所接受的参数是一个可变长的参数 后面的arg0是一个数组。
Handler 的使用
在同一个线程中:先定义一个Handler对象,然后调用他的post(r)"没有调用线程对象的 start,而是直接调用它的run()方法",Runnable r = new Runnable(){重写run()};
在不同的线程中:先定义一个Thread对象,然后调用他的start(r),Runnable r = new Runnable(){重写run()};
在使用HandlerThread的getLooper()方法之前,必须先调用该类的start()方法;
HandlerThread handlerThread = new HandlerThread("handler_thread");
handlerThread.start();
MyHandler myHandler = new MyHandler(handlerThread.getLooper());
Message msg = myHandler.obtainMessage();
msg.sendToTarget();
classs MyHandler extends Handler{
public MyHandler(){
}
public MyHandler(Looper looper){
super(looper);
}
@Override
public void handlerMessage(Message msg){
}
}
Bundle 数据存储的工具
Handler handler = new Handler();
在主体函数中调用 handler.post(Thread);
其中Thread
Runnable Thread = new Runnable(){
@Override
public void run(){
handler.postDelayed(Thread, 3000);
//Thread.sleep(1000);
}
}
第二种方法是在定义Handler 时重写handleMessage(Message msg){}
在Runnable 中加入 Thread.sendMessage(msg);
AQLiteOpenHelper 使用方法
作为一个访问SQLite 的助手类,提供两个方面的功能:
第一,getReableDatabase(),getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作。
第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己操作。
1.需要自己写一个类继承它
2.在SQLiteOpenHelper的子类中,必须有该构造函数
public DatabaseHelper(Context context,String name,CursorFactory,in version)
3.如果是第一次创建数据库,则执行public onCreate(SQLiteDatabase db){}
DatabaseHelper dbHelper = new DatabaseHelper(Ex_psqlActivity.this, "test_mars_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
主线程:中需要做的是调用异步操作的类函数;
调用execute 方法
onPreExecute()执行在UI线程中
doInBackground(Integer... param)
不运行在UI线程当中,不能对UI当中的控件进行设置和修改;
该方法中想要修改UI线程 调用 publishProgress 都会触发 onProgressUpdate()方法;
最后会将结果传递到onPostExecute
onPostExecute:在 doInBackground 方法结束之后再运行,并且运行在UI线程当中
异步线程:
在类函数中需要继承 AsyncTask<Void, Void, Void>;
三个参数第一个是定义doInBackgound()的参数类型,
第二个参数是定义 onProgressUpdate()的参数类型
第三个参数是定义了 doInBackgound 的返回值类型,以及 onPostExecute()参数类型
重写 doInBackground(Void... arg0){ 在里面执行异步操作 };
“...”所接受的参数是一个可变长的参数 后面的arg0是一个数组。
Handler 的使用
在同一个线程中:先定义一个Handler对象,然后调用他的post(r)"没有调用线程对象的 start,而是直接调用它的run()方法",Runnable r = new Runnable(){重写run()};
在不同的线程中:先定义一个Thread对象,然后调用他的start(r),Runnable r = new Runnable(){重写run()};
在使用HandlerThread的getLooper()方法之前,必须先调用该类的start()方法;
HandlerThread handlerThread = new HandlerThread("handler_thread");
handlerThread.start();
MyHandler myHandler = new MyHandler(handlerThread.getLooper());
Message msg = myHandler.obtainMessage();
msg.sendToTarget();
classs MyHandler extends Handler{
public MyHandler(){
}
public MyHandler(Looper looper){
super(looper);
}
@Override
public void handlerMessage(Message msg){
}
}
Bundle 数据存储的工具
Handler handler = new Handler();
在主体函数中调用 handler.post(Thread);
其中Thread
Runnable Thread = new Runnable(){
@Override
public void run(){
handler.postDelayed(Thread, 3000);
//Thread.sleep(1000);
}
}
第二种方法是在定义Handler 时重写handleMessage(Message msg){}
在Runnable 中加入 Thread.sendMessage(msg);
AQLiteOpenHelper 使用方法
作为一个访问SQLite 的助手类,提供两个方面的功能:
第一,getReableDatabase(),getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作。
第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己操作。
1.需要自己写一个类继承它
2.在SQLiteOpenHelper的子类中,必须有该构造函数
public DatabaseHelper(Context context,String name,CursorFactory,in version)
3.如果是第一次创建数据库,则执行public onCreate(SQLiteDatabase db){}
DatabaseHelper dbHelper = new DatabaseHelper(Ex_psqlActivity.this, "test_mars_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();