1、Afinal
Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,可以通过注解的方式进行绑定ui和事件。通过finalBitmap,可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,以ajax形式请求数据。
2、 xUtils
xUtils:可以说是Afinal的升级版。
xUtils 包含了很多实用的android工具。
xUtils 支持大文件上传,更全面的请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。
xUitls 最低兼容android 2.2 (api level8)。
3、LoonAndroid
这是一个纯实现功能的框架,它的目标是节省代码量,降低耦合,让代码层次看起来更清晰。
4、 KJFrameForAndroid
是一个android的orm 和 ioc 框架。同时封装了android中的Bitmap与Http *** 作的框架,使其更加简单易用;
KJFrameForAndroid的设计思想是通过封装Android原生SDK中复杂的复杂 *** 作而达到简化Android应用级开发,最终实现快速而又安全的开发APP。我们提倡用最少的代码,完成最多的 *** 作,用最高的效率,完成最复杂的功能。
项目地址:github/kymjs/KJFrameForAndroid
5、 dhroid
dhroid 是基于android 平台, 极速开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展.使你更快,更好的开发商业级别应用。
6、 SmartAndroid
SmartAndroid是一套给 Android开发者使用的应用程序开发框架和工具包。提供了一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。使用 SmartAndroid可以减少代码的编写量,并将你的精力投入到项目的创造性开发上。
7、 andBase
ndbase是为Android开发者量身打造的一款开源类库产品
8、 AndroidAnnotations
完全的注解,使开发起来更加便利,程序员写的代码也更少。
9、 volley
Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮异步加载网络图片、网络数据,Google官方推荐。
问题二:安卓软件开发框架有哪些 安卓软件开发需要一定的Java基础,当然少不了Java环境的搭建,还有安卓SDK的环境搭建,接着你下个eclipse装个ADT插件,或者直接用Android studio就可以开发安卓应用了,具体的建议你找个开发教程
问题三:android有哪些实用框架?分别用来做什么? Android 目前还没有那样成熟的框架可以使用……
只能说有一些开源项目较好地解决了部分方面的问题,例如:
(1)EventBus:解决了模块之间消息传递解耦合的问题
(2)picasso:解决异步加载图片和缓存图片的问题
(3)dagger:一个依赖注入工具库
……
其他开源项目大多数解决了部分通用 UI 控件的问题,不过我看你的意思是架构级别的框架,而不是什么 UI 控件这类的小东西。
问题四:什么是android的框架开发 上图中的第二层Framework
问题五:常用的android开发框架有哪些 android bootstrap有试用过,但其实不用框架都能完成你想要的功能的话,真心没必要用。
问题六:Android的系统架构包括哪些部分 Android的系统架构和其 *** 作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
一、应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
二、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
三、系统运行库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
四、Linux内核层
Android内核是基于Linux 内核的修改的内核版本,它提供了用于支持Android平台的设备驱动。
问题七:android快速开发框架有哪些 ThinkAndroid免费源、简易、遵循Apache二源协议发布Android发框架其发宗旨简单、快速进行Android应用程序发包含Android mvc、简易sqlite orm、ioc模块、封装Android clitent模块,具快速构建文件缓存功能需考虑缓存文件格式都非轻松实现缓存基于文件缓存模块实现图片缓存功能android加载图片候oom问题加载图片错位问题都轻易解决包括手机发经应用实用工具类志管理配置文件管理android载器模块中国络切换检测等等工具 目前ThinkAndroid主要模块: MVC模块:实现视图与模型离 ioc模块:androidioc模块完全注解式进行UI绑定、res资源读取、及象初始化 数据库模块:androidorm框架使用线程池sqlite进行 *** 作 模块:通client进行封装数据请求支持异步及同步式加载 缓存模块:通简单配置及设计实现缓存缓存随意配置 图片缓存模块:imageview加载图片候需考虑图片加载程现oomandroid容器快速滑候现图片错位等现象 配置器模块:简易实现配配置 *** 作目前配置文件支持Preference、Properties配置进行存取 志打印模块:较快轻易实现志打印支持志打印扩展目前支持sdcard写入本打印、及控制台打印 载器模块:简单实现线程载、台载、断点续传、载进行控制、始、暂停、删除等等 中国络状态检测模块:中国络状态改变中国络状态进行检
问题八:主流android开发框架有哪些 android开发框架github上有非常非常多,各种都是开源的,例如侧滑菜单,ImageLoading等等。
问题九:Android 有哪些著名的开源框架呢? 什么应用才对应什么所谓框架。你写个游戏用J2EE的框架试试。或者你写个搜索引擎用游戏引擎试试。没有哪个框架解决所有问题,如果那样,搞计算机也太简单了,框架拿来,随便改改就是一个软件。还是学点设计模式这些基本的有用。
问题十:Android软件框架结构自可分为哪些层? 开发一个程序,android的系统框架是层层相扣,不能分开的。
应用程序层:
这个层主要指的就是用java语言编写的运行在虚拟机上的程序,Google在最开始时就 在android系统中捆绑了一些核心的应用(核心应用的编写必须使用应用层序框架层的API框架),例如你android手机中SMS发送短消息的程序,通讯录等等。
应用程序框架层:
指的就是开发时所需要的API框架,开发人员是在遵守该框架的原则上,调用他们的,开发自己所需要的程序。
系统运行库层:
用于支持应用框架层的各个组件的。就是说当开发人员使用android应用框架层时,android系统会通过一些C/C++库来支持对我们使用的各个组件,使其能更好地为开发者服务。
linux核心层:
android的核心系统服务如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于Linux2.6内核,Linux内核同时也作为硬件和软件栈之间的抽象层。
因此,你开发的程序是运行在应用程序层,开发中写代码调用的包,是基于应用框架层,而在应用框架中的各个组件是需要系统运行库的支持的,例如,你要登陆查看的信息就必须访问到SQLite数据库,SQLite就位于系统运行库,再有,你登入要输入信息,肯定需要键盘驱动的支持,而各种驱动是依赖Linux内核的。
请看sqllite增删改查的小例子,例子来自于android学习手册,里面有源码。android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
先介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思。其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的. 两者之间是不匹配的.而ORM作为项目中间件形式实现数据在不同场景下数据关系映射. 对象关系映射是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM就是这样而来的。
下面先列出几个ORM框架:ORMLite、greendao、ormndroid、androrm、ActiveAndroid
其中以前最早接触过ormlite,GreenDao了解过,其他的几个真没怎么见过。所以这里主要介绍ormlite和GreenDao。
最开始现在stackoverflow输入sqlite orm关键字,搜索出了一些相关的文章:http://stackoverflow.com/search?q=sqlite+orm ,你会发现很有趣的是,ormlite的作者Gray和greenDao的开发团队green robot同时出现在一些帖子中,向提问者推荐他们的框架。当然也会有一些热心的朋友推荐ormdroid。其实不论在stackoverflow上还是官网上,greenDao的团队的比较都是针对ORMLite的,可见,其主要的竞争对手,或许称互相促进者更合适,毕竟他们没有什么商业利益,完全开源。所以开源的ORM框架中,ormLite和greenDao是最火的。其它几种就不做比较,有兴趣的朋友可以到官网看下。下面对ORMLite和GreenDao做个简单的比较:
ormlite
基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)
优点:
文档较全面,社区活跃,有好的维护,使用简单,易上手。
缺点:
基于反射,效率较低
GreenDao
官网中明确指明了其首要设计目标:
Maximum performance (probably the fastest ORM for Android):系能最大化
Easy to use APIs:便于使用
Highly optimized for Android:对于Android高度优化
Minimal memory consumption:最小化内存开销
Small library size, focus on the essentials:较小的文件体积,只集中在必要的部分上。
优点:
效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍。官网测试结果:http:/
/greendao-orm.com/features/
文件较小(<100K),占用更少的内存 ,但是需要create Dao,
*** 作实体灵活:支持get,update,delete等 *** 作
缺点:
学习成本较高。其中使用了一个java工程根据一些属性和规则去generate一些基础代码,类似于javaBean但会有一些规则,另外还有QueryBuilder、Dao等API,所以首先要明白整个过程,才能方便使用。没有ORMLite那样封装的完整,不过greenDao的官网上也提到了这一点,正是基于generator而不是反射,才使得其效率高的多。
另外GreenDao支持Protocol buffers协议数据的直接存储 ,如果通过protobuf协议和服务器交互,不需要任何的映射。
Protocol Buffers协议:以一种高效可扩展的对结构化数据进行编码的方式。google内部的RPC协议和文件格式大部分都是使用它。
RPC:远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
可能因为GreenDao的效率高,而且需要学习成本高点,所以个人还是有兴趣学一学的。接下来会发布一些GreenDao更详细的文章,有对官方文档的翻译还有代码的简单讲解。
或许以上内容很简单,只是简单的介绍了下,对其它几个框架并没有做更多的介绍,有了解的朋友可以提出来,可以提出来,大家一起探讨下。
常量类:ConstantUtil
public class ConstantUtil {// 数据库名称
public static final String DATABASE_NAME = "user_manager.db"
// 数据库版本号
public static final int DATABASE_VERSION = 1
//表名
public static final String TABLE_NAME = "user_info"
//字段名
public static final String USER_ID = "userId"
public static final String USER_NAME = "username"
public static final String USER_PASSWORD = "password"
public static final String USER_ADDRESS = "address"
}
自定义SQLiteOpenHelper:MySQLiteOpenHelper
public class MySQLiteOpenHelper extends SQLiteOpenHelper {// 定义一个SQLiteDatabase对象,对表进行相应的 *** 作
private SQLiteDatabase mDatabase
public MySQLiteOpenHelper(Context context) {
super(context, ConstantUtil.DATABASE_NAME, null,
ConstantUtil.DATABASE_VERSION)
mDatabase = getWritableDatabase()
}
/*
* 创建表
*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//sql语句
String sql = "create table " + ConstantUtil.TABLE_NAME + "("
+ ConstantUtil.USER_ID + " integer primary key,"
+ ConstantUtil.USER_NAME + " text not null,"
+ ConstantUtil.USER_PASSWORD + " text not null,"
+ ConstantUtil.USER_ADDRESS + " text not null)"
db.execSQL(sql)
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
onCreate(db)
}
/**
* 添加数据
* @param cv
* @return
*/
public boolean insertData(ContentValues cv){
return mDatabase.insert(ConstantUtil.TABLE_NAME, null, cv)>0
}
/**
* 查询所有数据
* @return
*/
public List<Userinfo> queryData(){
List<Userinfo> userinfos=new ArrayList<Userinfo>()
//从数据库里查询数据
Cursor cursor=mDatabase.query(ConstantUtil.TABLE_NAME, null, null, null, null, null, null)
if(cursor!=null){
//取出数据
while (cursor.moveToNext()) {
Userinfo userinfo=new Userinfo()
userinfo.setUserId(cursor.getInt(0))
userinfo.setUsername(cursor.getString(1))
userinfo.setPassword(cursor.getString(2))
userinfo.setAddress(cursor.getString(3))
userinfos.add(userinfo)
}
}
return userinfos
}
}
主Activity
public class MainActivity extends Activity {// 控件
private TextView txtName, txtPwd, txtAddress
private EditText edtName, edtPwd, edtAddress
private ListView mListView
// 数据库对象
private MySQLiteOpenHelper mySQLiteOpenHelper
private UserinfoAdapter adapter
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
findView()
init()
}
private void findView() {
// TODO Auto-generated method stub
edtName = (EditText) findViewById(R.id.id_edit1)
edtPwd = (EditText) findViewById(R.id.id_edit2)
edtAddress = (EditText) findViewById(R.id.id_edit3)
mListView = (ListView) findViewById(R.id.id_listview)
}
private void init() {
// TODO Auto-generated method stub
mySQLiteOpenHelper = new MySQLiteOpenHelper(MainActivity.this)
}
public void onAction(View v) {
switch (v.getId()) {
case R.id.id_btn_add:
//添加数据
String userName=edtName.getText().toString()
String userPwd=edtPwd.getText().toString()
String userAdress=edtAddress.getText().toString()
//传入参数
ContentValues cv=new ContentValues()
//列名和值
cv.put(ConstantUtil.USER_NAME, userName)
cv.put(ConstantUtil.USER_PASSWORD, userPwd)
cv.put(ConstantUtil.USER_ADDRESS, userAdress)
//得到结果
boolean flag=mySQLiteOpenHelper.insertData(cv)
if (flag) {
Toast.makeText(MainActivity.this, "添加记录成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(MainActivity.this, "添加记录失败", Toast.LENGTH_SHORT).show()
}
break
case R.id.id_btn_query:
//查询数据
List<Userinfo> userinfos=mySQLiteOpenHelper.queryData()
if (adapter!=null) {
adapter=null
}
adapter=new UserinfoAdapter(userinfos)
mListView.setAdapter(adapter)
break
default:
break
}
}
//数据适配器
class UserinfoAdapter extends BaseAdapter{
List<Userinfo> userinfos
public UserinfoAdapter(List<Userinfo> _userinfos){
this.userinfos=_userinfos
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return userinfos.size()
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return userinfos.get(position)
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView==null){
convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.listview_item, null)
txtName=(TextView) convertView.findViewById(R.id.id_txt_name)
txtPwd=(TextView) convertView.findViewById(R.id.id_txt_pwd)
txtAddress=(TextView) convertView.findViewById(R.id.id_txt_address)
txtName.setText(userinfos.get(position).getUsername())
txtPwd.setText(userinfos.get(position).getPassword())
txtAddress.setText(userinfos.get(position).getAddress())
}
return convertView
}
}
}
完整源码下载地址(附数据库文件查询软件+运行效果图):
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)