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 ...
随机推荐
- 【第十四章】 springboot + profile(不同环境读取不同配置)
具体做法: 不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中:prod环境下的配置配置在application-prod.prope ...
- UVa 10603 倒水问题
https://vjudge.net/problem/UVA-10603 题意:三个杯子,倒水问题.找出最少倒水量. 思路:路径寻找问题.不难,暴力枚举. #include<iostream&g ...
- 关于ES6的箭头函数的详解
ok 坑比函数~~箭头函数~~不自己动手写看懂也不行~~~ 当然你也可以一点一点的把函数复制到Babel里面去将ES6转换成ES5 (斗笔行为) 老谢写的笔记教程就是深入(通俗易懂)哈哈~~~ 第 ...
- python input选择
例1 import sys #声明字符串数组并初始化 newspaper=['1.北京晚报','2.作家文摘','3.参考消息', \ '4.证券报','5.不需要'] #字符串数组的输出 ): pr ...
- EsayUI + MVC + ADO.NET(仓储基础接口)
1.RepositoryFramework(仓储接口:无外乎就是CRUD) 1.IAddRepository(添加接口) using System; namespace Notify.Infras ...
- Qt5_容器_知识点记录
1.删除: 1.1.erase 1.2.remove / removeAt 2. 3. 4. 5.
- signal_windows
1.Qt532(vs2010 opengl) // ZC: windows signal: // http://blog.csdn.net/mergerly/article/details/79521 ...
- Python BeautifulSoup的使用
2017-07-24 22:39:14 Python3 中的beautifulsoup引入的包是bs4 import requests from bs4 import * r = requests.g ...
- Java基础八--构造函数
Java基础八--构造函数 一.子父类中构造函数的特点 1.1 为什么在子类构造对象时,发现,访问子类构造函数时,父类也运行了呢? 原因是:在子类的构造函数中第一行有一个默认的隐式语句. super( ...
- SpringMVC是如何逐步简化Servlet的编程的
转自:https://www.cnblogs.com/winterfells/p/8476759.html Servlet和JSP是开发java Web应用程序的两种基本技术,Spring MVC是S ...