AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);
package com.lixu.asynctask; import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "users")
public class User {
public User() { } @Override
public String toString() {
return "id" + user_id + "," + ",姓名:" + name + ",年龄:" + age + ",性别:" + sex+",班级是:"+aclass;
} public int getUser_id() {
return user_id;
} public void setUser_id(int user_id) {
this.user_id = user_id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public AClass getAclass() {
return aclass;
} public void setAclass(AClass aclass) {
this.aclass = aclass;
} public User(int user_id, String name, int age, String sex, AClass aclass) {
super();
this.user_id = user_id;
this.name = name;
this.age = age;
this.sex = sex;
this.aclass = aclass;
} @DatabaseField(id=true,columnName = "user_id")
public int user_id; @DatabaseField(columnName = "name")
public String name; @DatabaseField(columnName = "age")
public int age;
@DatabaseField(columnName = "sex")
public String sex;
@DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true)
public AClass aclass; }
package com.lixu.asynctask; import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.ForeignCollectionField;
import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "classes")
public class AClass { public AClass(long id, String name, ForeignCollection<User> user) {
super();
this.id = id;
this.name = name;
this.user = user;
} @Override
public String toString() {
return "id" + id + "班级名:" + name;
} public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public ForeignCollection<User> getUser() {
return user;
} public void setUser(ForeignCollection<User> user) {
this.user = user;
} @DatabaseField(id = true)
public long id; @DatabaseField(dataType = DataType.STRING)
public String name; @ForeignCollectionField(eager = false)
public ForeignCollection<User> user = null; public AClass() { } }
package com.lixu.asynctask; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log; public class MyORMlite extends OrmLiteSqliteOpenHelper {
private static String DATABASENAME = "lixu.db";
private static int DATABASEVERSION = 1; private static MyORMlite mMyORMlite = null;
private Dao<User, Integer> muserDao = null;
private Dao<AClass, Integer> mclassDao = null; public MyORMlite(Context context, String databaseName, CursorFactory factory, int databaseVersion) {
super(context, databaseName, factory, databaseVersion);
} public static MyORMlite getInstance(Context context) {
if (mMyORMlite == null) {
mMyORMlite = new MyORMlite(context, DATABASENAME, null, DATABASEVERSION);
}
return mMyORMlite; } @Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) { try {
TableUtils.createTableIfNotExists(arg1, User.class);
TableUtils.createTableIfNotExists(arg1, AClass.class);
Log.d("MyORMlite", "被创建");
} catch (Exception e) {
e.printStackTrace();
}
} public Dao<User, Integer> getuserDao() {
if (muserDao == null) {
try {
muserDao = getDao(User.class);
} catch (Exception e) {
e.printStackTrace();
}
}
return muserDao;
} public Dao<AClass, Integer> getclassDao() {
if (mclassDao == null) {
try {
mclassDao = getDao(AClass.class);
} catch (Exception e) {
e.printStackTrace();
}
}
return mclassDao;
} @Override
public void close() {
super.close();
muserDao = null;
mclassDao = null; } @Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, int arg3) { } }
package com.lixu.asynctask; import java.sql.SQLException;
import java.util.List; import com.j256.ormlite.dao.Dao;
import com.lixu.asynctask.AClass;
import com.lixu.asynctask.User;
import com.lixu.asynctask.MyORMlite; import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity {
private Dao<User, Integer> muserDao = null;
private Dao<AClass, Integer> mclassDao = null;
TextView tv;
StringBuffer sb = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); MyORMlite mMyORMlite = MyORMlite.getInstance(this);
muserDao = mMyORMlite.getuserDao();
mclassDao = mMyORMlite.getclassDao(); tv = (TextView) findViewById(R.id.tv);
tv.setMovementMethod(ScrollingMovementMethod.getInstance()); Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyTask mMyTask = new MyTask();
mMyTask.execute();
}
});
} // 用一个类继承AsyncTask
private class MyTask extends AsyncTask {
// 先执行这个方法 可以处理一些初始化的事件等。
@Override
protected void onPreExecute() {
sb = new StringBuffer();
super.onPreExecute();
} // 这个方法可以处理相对耗时较长的任务,这个方法里面不可以执行ui任务。
@Override
protected Object doInBackground(Object... params) {
add();
List<User> list = chaxun();
for (User n : list) {
sb.append("姓名是:" + n.getName() + ",性别是:" + n.getSex() + ",班级是:" + n.getAclass().getName() + "\n");
}
return sb;
} // 可以将上一个方法处理的结果传到这个方法中,并且这个方法里面可以处理ui任务。
@Override
protected void onPostExecute(Object params) {
super.onPostExecute(params);
tv.setText(params.toString());
Toast.makeText(MainActivity.this, "显示成功", 0).show();
}
} public List<User> chaxun() {
List<User> list = null;
try {
list = muserDao.queryForAll(); } catch (SQLException e) {
e.printStackTrace();
}
return list; } public void add() { for (int j = 1; j <= 3; j++) {
AClass classes = null;
classes = new AClass();
classes.setName("大三" + j + "班");
classes.setId(j);
try {
mclassDao.createIfNotExists(classes);
} catch (SQLException e) {
e.printStackTrace();
}
for (int i = 10 * (j - 1) + 1; i <= 10 * j; i++) {
User user = new User();
user.setName("张三" + i);
user.setAge(20 + i);
user.setUser_id(i);
user.setSex("男");
user.setAclass(classes);// 挂载到class
try {
muserDao.createIfNotExists(user);
} catch (SQLException e) {
e.printStackTrace();
} }
} }
}
AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);的更多相关文章
- Android线程管理之AsyncTask异步任务
前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相 ...
- AsyncTask异步交互和httpurlconnection结合使用
//网络请求数据 package com.baidu.myutils; import java.io.BufferedReader; import java.io.InputStreamReader; ...
- Android多线程分析之五:使用AsyncTask异步下载图像
Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<An ...
- 使用AsyncTask异步更新UI界面及原理分析
概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线 ...
- Android 多线程----AsyncTask异步任务详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- android AsyncTask异步下载并更新进度条
AsyncTask异步下载并更新进度条 //如果不是很明白请看上篇文章的异步下载 AsyncTask<String, Integer, String> 第一个参数:String 传入 ...
- Android中使用Thread线程与AsyncTask异步任务的区别
最近和几个朋友交流Android开发中的网络下载问题时,谈到了用Thread开启下载线程时会产生的Bug,其实直接用子线程开启下载任务的确是很Low的做法,那么原因究竟如何,而比较高大上的做法是怎样? ...
- Android异步处理系列文章四篇之二 使用AsyncTask异步更新UI界面
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...
- Android使用AsyncTask异步线程网络通信获取数据(get json)
摘要: android 4.0以上强制要求不能在主线程执行耗时的网络操作,网络操作需要使用Thead+Handler或AsyncTask,本文将介绍AsyncTask的使用方法. 内容: 1.添加Ht ...
随机推荐
- SQLSERVER中order by ,group by ,having where 的先后顺序
SELECT [Name] FROM [LinqToSql].[dbo].[Student] where name='***' group by name having (name='* ...
- 【第六章】 springboot + 事务
在实际开发中,其实很少会用到事务,一般情况下事务用的比较多的是在金钱计算方面. mybatis与spring集成后,其事务该怎么做?其实很简单,直接在上一节代码的基础上在相应的方法(通常是servic ...
- 使用JavaScript / JQuery导出 html table 数据至 Excel 兼容IE/Chrome/Firefox
function fnExcelReport() { var tab_text="<table border='2px'><tr bgcolor='#87AFC6'> ...
- XML序列化、反序列化
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Run ...
- 生信软件的好帮手-bioconda--转载
http://mp.weixin.qq.com/s/nK1Kkf9lfZStoX25Y7SzHQ 这篇文章主要适用于Linux平台,当然MacOS也行,不过它有更好安装方法. 此外网上也会许多更好的关 ...
- Python subprocess模块学习总结--转载
一.subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python ...
- C++:几种callable实现方式的性能对比
C++中几种callable实现方式的性能对比 前言 C++中想实现一个callable的对象,通常有四种方式: std::function:最common的方式,一般会配合std::bind使用. ...
- c++ 查找容器中符合条件的元素,并返回iterator(find_if)
#include <iostream> // std::cout #include <algorithm> // std::find_if #include <vecto ...
- 【转】DrawDibDraw
http://blog.csdn.net/normallife/article/details/53177315 BMP位图文件结构及平滑缩放 用普通方法显示BMP位图,占内存大,速度慢,在图形缩小时 ...
- [源][osg][osgBullet]osgBullet例子介绍
1.BasicDemo 基本样例 一个小玩具飞机坠落,一个立方体盒子在转圈 2.centerofmass 质心 3.collision 碰撞检测 这里有一个大神自己改的例子: http://blog. ...