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 ...
随机推荐
- TeeChart的坐标轴
TeeChart一共有六个坐标轴,一下是默认值 tChart1.Axes.Bottom.Visible = true;//横轴 tChart1.Axes.Left.Visible = true;//纵 ...
- 论文笔记——Factorized Convolutional Neural Networks
1. 论文思想 将3D卷积分解为spatial convolution in each channel and linear projection across channels. (spatial ...
- trigger自动执行事件
html <button>点击文字变红</button> <p>trigger出发点击事件</p> js $('button').click(funct ...
- 瞎折腾之Webhooks
之前听学长介绍过webhooks,也知道有这个东西,但没有真正的用于项目部署,长久以来一直过着“刀耕火种”的生活......长久以来,都是这么更新代码的: 由于之前做的项目刚刚上线,需要对其进行持续的 ...
- 同一主机配置:vsftpd+pam+mysql
两种情况: 1.vsftpd和MySQL不在同一台主机上 vsftpd服务器和MySQL服务器不在同一台主机上时,vsftpd服务器需要安装pam_mysql. 在指定用户认证时,vsftpd需要链接 ...
- angular 模板语法(官方文档摘录)
https://angular.cn/guide/template-syntax {{}} 和"" 如果嵌套,{{}}里面求完值,""就是原意 <h3&g ...
- Spring AMQP 源码分析 03 - MessageConverter
### 准备 ## 目标 了解 Spring AMQP 消息转化实现 ## 相关资源 Quick Tour for the impatient:<http://docs.spring.io/ ...
- PHP面向对象初中高级之由浅入深
php面向对象编程基本实践:(了解类,类到对象的实例化,构造和析构,对象的引用); 类的概念: 物以类聚,把具有相似特性的对象对垒到一个类中 类定义了这些相似对象拥有的相同的属性和方法 类是相似对象的 ...
- android--------自定义控件ListView实现下拉刷新和上拉加载
开发项目过程中基本都会用到listView的下拉刷新和上滑加载更多,为了方便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能. Android下拉刷新可以分为两种情况: 1.获取 ...
- Confluence 6 更新目录
当编辑目录时候的限制 你不能对你用户属于的目录进行编辑,禁用或者删除.这个能够预防管理员通过修改目录的时候讲自己属于的管理员权限从系统管理员组中删除. 这个限制对所有的用户目录类型适用.例如: 如果当 ...