时间: 2024-10-03 20:38:19
Android技术总结13
Android技术总结13的相关文章
Android技术13:NDK中无法返回中文问题解决
1问题 为了加强软件的安全性,将http请求,封装在jni中,即通过c语言实现http请求,返回字符串.然而字符串往往包含中文,当返回类型为jstring时,就会出现JNI WARNING: illegal continuation byte 0xd0这错误,这是因为jni中c文件有中文, 中文不能被识别.无法使用(*env)->NewStringUTF(env,s);返回字符串. 2.方案 2.1将native方法返回类型为byte数组 例如:private native byte[] ge
Android技术18:Android中Adapter类详解
1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba
Android技术22:Android中AIDL
在Android中进程内部通过全局变量,文件,preference,数据库作为数据的载体实现数据共享和通信.然后在进程之间则需要借助Binder实现IPC调用.Android进程通信框架:服务端,客户端,Linux binder驱动.Binder驱动成为连接两端的桥梁.我们首先通过aidl语言实现一个简单的多进程通信.具体实现步骤如下: 1.定义aidl文件 IService.aidl,定义一个接口,test() ,不包含负责的类和数据. 1 package com.demo.ipc; 2 3
Android技术21:Android异步消息处理线程
Android异步消息处理线程,该线程一直处于无限循环之中,每次从Message Queue中读取消息,然后回调消息处理的方法,Handler的HandlerMessage中处理消息.如果消息队列为空,该线程就挂,等待消息队列中有消息进来,就唤醒线程. 1.Android异步线程内部结构 在线程内部有一个或者多个Handler对象,外部程序通过Handler对象向线程发送异步消息,消息经过Handler传递到Message Queue对象中,每个线程内部只包含一个一个消息队列对象,线程主执行函数
Android技术11:Android的线程模型
1.Android的单线程模型 在android应用程序启动时,Android会同时启动一个对应的主线程Main Thread.主线程主要负责处理UI方面的事件,所以又称UI线程.Android应用程序必须遵守单线程模型原则:androidUI操作不是线程安全的,并且这些操作必须在UI线程中完成.UI线程负责事件监听和绘图处理,因此必须保证UI线程能够随便响应用户,所以那些非常耗时的,必须放到其他线程中处理,如网络连接,数据库读取等操作,否超过一定时间没有响应,则应用程序就会终止. 2.消息队列
Android技术10:Java与C语言之间简单数据的传递
由于C语言和Java语言之间很多类型不一致性,因此使用native时,需要数据类型转换.下面演示分别传递整型,字符串,整型数组,Java静态方法传递数据. 1.创建native方法 我们单独创建一个NativeClass类来存放native方法 1 package com.forsta.ndk; 2 3 public class NativeClass { 4 public native int add(int x,int y); 5 public native String showStrin
Android技术15:自定义控件实现
在Android开发中,常用的组件有时候无法满足我们的需求,因此我们需要自定义组件,这样可以提高组件的复用性,通过继承已有的组件,在此基础上对塔改进,下面演示简单一个一个按钮控件,塔包含2个ImageView和1个TextView. 1.组件模板 mybutton.xml 1 <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="
Android技术8:SQLite数据升级
由于应用程序的升级,往往伴随着数据库的升级,数据库升级一般设计表的增加与删除,表添加删除字段,数据的备份等操作. 1.数据库升级 我们都通过继承SQLiteOpenHelper类,实现对数据库的操作和版本升级等.版本升级有关方法 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion); 当版本号大于当前数据库版本号,会调用onUpgrade方法. 2.演示数据库升级 对于表的增删相对比较简单,下面演示添加字段. 2.1原始数据库s
Android技术6:Android中对于Bitmap的处理
很多Android应用在运行时,会遇到运行缓慢,不流畅等影响用户体验问题,这有一部分原因与图片有密切关系.当android应用需要加载较大较多的照片时,经常反应迟缓,甚至由于OOM,造成系统奔溃.下面将提供一种可行的解决方案. 1.获取图片的宽高属性 1 BitmapFactory.Options options=new BitmapFactory.Options(); 2 options.inJustDecodeBounds=true; 3 BitmapFactory.decodeFile(f