Android入门基础培训课件_第1页
Android入门基础培训课件_第2页
Android入门基础培训课件_第3页
Android入门基础培训课件_第4页
Android入门基础培训课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android入门基础培训Android开发环境的搭建(androidstudio+gradle+jdk1.8)Android框架Android四大组件:Activity、Service、ContentProvider、BroadcastReceiver数据存储:SharedPreferences、文件、SQLite数据库、网络Android网络通信volley,xutils,fjFrameforandroid,hessian,okhttp等其它:NDK,adb、HierarchyView、DDMS、draw9patch2021/3/261Android入门基础培训ppt课件Android入门基础培训2021/3/262Android入门基础培训ppt课件2021/3/263Android入门基础培训ppt课件Android入门基础培训应用是用Java语言编写的云新在虚拟机上的程序。2.ApplicationFramework(应用框架层)这一层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用。ViewSystem:可以用来构建应用程序,它包括列表、网格、文本框、按钮以及

可嵌入的Web浏览器。ContentProviders:它可以让一个应用访问另一个应用的数据,或共享它们自己

的数据。ResourceManager:提供非代码资源的访问,如本地字符串、图形和布局文件。NotificationManager:应用可以在状态栏中显示自定义的提示信息。ActivityManager:用来管理应用程序生命周期并提供常用的导航退回功能。WindowManager:管理所有的窗口程序。PackageManager:Android系统内的程序管理。2021/3/264Android入门基础培训ppt课件Android入门基础培训当使用Android应用框架时,Android系统会通过一些C/C++库赖支持我们使用的各个组件,使其能更好地为我们服务。Bionic系统C库:C语言标准库,系统最底层的的库,C库通过Linux系统来调用。多媒体库(MediaFramework):Android系统多媒体库,基于PackerVideoOpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。

SGL:2D图形引擎库。

SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

OpenGLES1.0:3D效果的支持。

SQLite:关系数据库。

Webkit:Web浏览器引擎。

FreeType:位图(bitmap)及矢量(vector)。在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,其只能执行.dex的可执行文件,当Java程序通过编译后,最后还需要通过SDK中的dx工具转为成.dex格式才能正常在虚拟机上执行,Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(DalvikExceutable)的文件。

Dalvik虚拟机有几个主要特征:专有的dex文件格式、dex的优化,dex文件的结构是紧凑的、基于寄存器、一个应用,一个虚拟机实例,一个进程。每一个Android应用度运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间2021/3/265Android入门基础培训ppt课件Android入门基础培训显示驱动(DisplayDriver):基于Linux的帧缓冲(FrameBuffer)驱动。键盘驱动(KeyBoardDriver):作为输入设备的键盘驱动。Flash内存驱动(FlaseMemoryDriver):基于MTD的Flash驱动程序。照相机驱动(CameraDriver):常用的基于Linux的v412(VideoforLinux)的驱动。音频驱动(AudioDriver):常用的基于ALSA的高级Linux声音体系驱动。蓝牙驱动(BluetoothDriver):基于IEEE802.15.1标准的无线传输技术。WiFi驱动:基于IEEE802.11标准的驱动程序。BinderIPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。PowerManagement(电源管理):比如电池电量等。

2021/3/266Android入门基础培训ppt课件Android入门基础培训2021/3/267Android入门基础培训ppt课件Android入门基础培训2021/3/268Android入门基础培训ppt课件1.Activity2021/3/269Android入门基础培训ppt课件Activity是Android程序的表示层,程序的每一个显示屏幕就是一个Activity。1、Running

位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。

2、Paused

当Acitivy被另一个透明的或者非全屏的Activity覆盖时的状态叫Paused状态,虽然可见但不可交互。

3、Stop

当Activity被另外一个Activity覆盖、界面不可见时处于Stop状态。

4、Killed

Activity被系统杀死或者跟本没启动时就是Killed状态。

Android是通过一种Activity栈的方式来管理Activity的,一个Activity在栈中的位置决定它的状态。2021/3/2610Android入门基础培训ppt课件2.BroadcastReceive

你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。广播类型:1)普通广播,通过Context.sendBroadcast(IntentmyIntent)发送的2)有序广播,通过Context.sendOrderedBroadcast(intent,receiverPermission)发送的,该方法第2个参数决定该广播的级别,级别数值是在-1000到1000之间,值越大,发送的优先级越高;广播接收者接收广播时的级别级别(可通过intentfilter中的priority进行设置设为2147483647时优先级最高),同级别接收的先后是随机的,再到级别低的收到广播,高级别的或同级别先接收到广播的可以通过abortBroadcast()方法截断广播使其他的接收者无法收到该广播,还有其他构造函数3)异步广播,通过Context.sendStickyBroadcast(IntentmyIntent)发送的,还有sendStickyOrderedBroadcast(intent,resultReceiver,scheduler,

initialCode,initialData,initialExtras)方法,该方法具有有序广播的特性也有异步广播的特性;发送异步广播要:<uses-permissionandroid:name="android.permission.BROADCAST_STICKY"

/>权限,2021/3/2611Android入门基础培训ppt课件接收并处理完Intent后,广播依然存在,直到你调用removeStickyBroadcast(intent)主动把它去掉注意:发送广播时的intent参数与Contex.startActivity()启动起来的Intent不同,前者可以被多个订阅它的广播接收器调用,后者只能被一个(Activity或service)调用。监听广播Intent步骤:1)

写一个继承BroadCastReceiver的类,重写onReceive()方法,广播接收器仅在它执行这个方法时处于活跃状态。当onReceive()返回后,它即为失活状态,注意:为了保证用户交互过程的流畅,一些费时的操作要放到线程里,如类名SMSBroadcastReceiver2)

注册该广播接收者,注册有两种方法程序动态注册和AndroidManifest文件中进行静态注册(可理解为系统中注册)如下:

静态注册,注册的广播,下面的priority表示接收广播的级别"2147483647"为最高优先级2021/3/2612Android入门基础培训ppt课件3.ServiceService在后台运行,不与用户进行交互。在默认情况下,Service运行在应用程序进程的主线程中,如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在单独的线程中处理,避免阻塞用户界面.创建Service–继承android.app.Service实现自己的服务•必须在AndroidManifest.xml注册service–<serviceandroid:name="MyService"></service>•启动service–startService(i);•停止service–stopService(i);startService–service没有运行,则先调用onCreate方法然后调用onStart方法–service已经运行,则直接调用onStart方法•stopService–调用stopService停止Service–调用onDestory最终销毁service2021/3/2613Android入门基础培训ppt课件绑定Service调用Context.bindService(),客户端可以绑定到正在运行的Service上,如果此时Service没有运行,系统会调用onCreate()方法来创建Service,但是并不会调用onStart()方法。客户端成功绑定到Service之后,可以从onBind()方法中返回一个IBinder对象,并使用IBinder对象来调用Service的方法。一旦客户端与Service绑定,就意味着客户端和Service之间建立了一个连接,只要还有连接存在,那么系统会一直让Service运行下去。使用bindService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的onUnbind()-->onDestory(),想主动解除绑定可使用Contex.unbindService(),系统依次调用onUnbind()-->onDestory();2021/3/2614Android入门基础培训ppt课件4.ContentProviderContentProvider是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取以及操作数据,实现数据共享方法。•Android自身也提供了几个现成的ContentProvider:–Contacts–Browser–CallLog–Settings–MediaStore使用方法通过ContentResolver来使用具体的某个ContentProvider。ContentResolvercr=getContentResolver();contentResolver提供的方法:–query()–insert()–update()–delete()2021/3/2615Android入门基础培训ppt课件ContentProvider-URI组成2021/3/2616Android入门基础培训ppt课件Android入门基础培训2021/3/2617Android入门基础培训ppt课件1.View及ViewGroup

View是基类,ViewGroup是它的子类。2021/3/2618Android入门基础培训ppt课件View和ViewGroup最重要的几个方法View和ViewGroup最重要的几个方法:onMeasure(intwidthMeasureSpec,intheightMeasureSpec):当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想要用多大地方啊?”,然后传入两个参数——widthMeasureSpec和heightMeasureSpeconDraw(Canvascanvas):View类中用于重绘的方法,这个方法是所有View、ViewGroup及其派生类都具有的方法,也是AndroidUI绘制最重要的方法。开发者可重载该方法,并在重载的方法内部基于参数canvas绘制自己的各种图形、图像效果。onLayout(booleanchanged,intleft,inttop,intright,intbottom):View类中布局发生改变时会调用的方法,这个方法是所有View、ViewGroup及其派生类都具有的方法,重载该类可以在布局发生改变时作定制处理,这在实现一些特效时非常有用。dispatchDraw(Canvascanvas):ViewGroup类及其派生类具有的方法,这个方法主要用于控制子View的绘制分发,重载该方法可改变子View的绘制,进而实现一些复杂的视效,典型的例子可参见Launcher模块Workspace的dispatchDraw重载。drawChild(Canvascanvas,Viewchild,longdrawingTime)):ViewGroup类及其派生类具有的方法,这个方法直接控制绘制某局具体的子view,重载该方法可控制具体某个具体子View。2021/3/2619Android入门基础培训ppt课件View布局2021/3/2620Android入门基础培训ppt课件View显示2021/3/2621Android入门基础培训ppt课件View显示过程1)ActivityManagerService创建Activity线程,激活一个activity

2)系统调用Instrumentation.newActivity创建一个activity

3)Activity创建后,attach到一个新创建的phonewindow中。这样Activity获取一个唯一的WindowManager服务的实例

4)Activity创建过程中使用setcontentView设置用用户UI,这些VIEW被加入到PhoneWindow的ContentParent中。

5)Activity线程继续执行,当执行到Activity.makeVisible是将根viewDecoView加入到WindowManger中,WindowManger实全会为每个DecoView创建对应的ViewRoot

6)每个ViewRoot拥有一个Surface,每个Surface将会调用底层库创建图形绘制的内存空间。这个底层库就是SurfaceFlinger。SurfaceFlinger同时也负责将个View绘制的图形合到一块(按照Z轴)显示到用户屏幕。

7)如果用户直接在Canvas上绘制,实际上它直接操作Surface。但对每个View的变更,它是要通知到ViewRoot,然后ViewRoot获取Canvas。如果绘制完成,surfaceFlinger得到通知,合并Surface成一个Surface到设备屏幕。

从上面的图形输出过程分析,我们可以知道真正显示图形的实际上跟Activity没有关系,完全由WindowManager来决定。WindowManager是一个系统服务,因此可以直接调用这个服务来创建界面,并且更绝的是Dialog、Menu也是有WindowManager来管理的。另外一个我们也可以看到,最底层都是Surface来,因此,常见开发游戏的人都推荐你使用SurfaceView来创建界面。2021/3/2622Android入门基础培训ppt课件2.五大UI布局为了适应各式各样的界面风格,Android系统提供了5种布局:FrameLayout(框架布局)LinearLayout(线性布局)RelativeLayout(相对布局)TableLayout(表格布局)AbsoluteLayout(绝对布局)2021/3/2623Android入门基础培训ppt课件

FrameLayout(框架布局)

所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西<?xmlversion="1.0"encoding="utf-8"?>

<FrameLayoutxmlns:android="/apk/res/android"

android:orientation="vertical"android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextViewandroid:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ff000000"

android:gravity="center"

android:text="1"/>

<TextViewandroid:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ff654321"

android:gravity="center“

android:text="2"/>

<TextViewandroid:layout_width="50dp"

android:layout_height="50dp"

android:background="#fffedcba"

android:gravity="center"

android:text="3"/>

</FrameLayout>

2021/3/2624Android入门基础培训ppt课件2021/3/2625Android入门基础培训ppt课件

LinearLayout(线性布局)

每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal")。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextViewandroid:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#ff000000"

android:text="@string/hello"/>

<LinearLayoutandroid:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextViewandroid:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#ff654321"

android:layout_weight="1"

android:text="1"/>

<TextViewandroid:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#fffedcba"

android:layout_weight="2"android:text="2"/>

</LinearLayout>

</LinearLayout>

2021/3/2626Android入门基础培训ppt课件2021/3/2627Android入门基础培训ppt课件

AbsoluteLayout(绝对布局)

绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。这种布局比较少用。<?xmlversion="1.0"encoding="utf-8"?>

<AbsoluteLayoutxmlns:android="/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextViewandroid:layout_width="50dp"

android:layout_height="50dp"

android:background="#ffffffff"

android:gravity="center"

android:layout_x="50dp"

android:layout_y="50dp"

android:text="1"/>

<TextViewandroid:layout_width="50dp"

android:layout_height="50dp"

android:background="#ff654321"

android:gravity="center"

android:layout_x="25dp"

android:layout_y="25dp"

android:text="2"/>

<TextViewandroid:layout_width="50dp"

android:layout_height="50dp"

android:background="#fffedcba"

android:gravity="center"

android:layout_x="125dp"

android:layout_y="125dp"

android:text="3"/>

</AbsoluteLayout>

2021/3/2628Android入门基础培训ppt课件2021/3/2629Android入门基础培训ppt课件

RelativeLayout(相对布局)

相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:相对于某一个元素android:layout_below、

android:layout_toLeftOf相对于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh<?xmlversion="1.0"encoding="utf-8"?>

<RelativeLayoutxmlns:android="/apk/res/android"

android:orientation="vertical"android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextViewandroid:id="@+id/text_01"android:layout_width="50dp"

android:layout_height="50dp"

android:background="#ffffffff"

android:gravity="center"

android:layout_alignParentBottom="true"

android:text="1"/>

<TextViewandroid:id="@+id/text_02"android:layout_width="50dp"

android:layout_height="50dp"

android:background="#ff654321"

android:gravity="center"

android:layout_above="@id/text_01"

android:layout_centerHorizontal="true"

android:text="2"/>

<TextViewandroid:id="@+id/text_03"android:layout_width="50dp"

android:layout_height="50dp"

android:background="#fffedcba"

android:gravity="center"

android:layout_toLeftOf="@id/text_02"

android:layout_above="@id/text_01"

android:text="3"/>

</RelativeLayout>

2021/3/2630Android入门基础培训ppt课件2021/3/2631Android入门基础培训ppt课件

TableLayout(表格布局)

TableLayout顾名思义,此布局为表格布局,适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。

TableRow是LinearLayout的子类,它的android:orientation属性值恒为horizontal,并且它的android:layout_width和android:layout_height属性值恒为MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是横向排列,并且宽高一致的。这样的设计使得每个TableRow里的子元素都相当于表格中的单元格一样。在TableRow中,单元格可以为空,但是不能跨列。

下面示例演示了一个TableLayout的布局结构,其中第二行只有两个单元格,而其余行都是三个单元格。2021/3/2632Android入门基础培训ppt课件<?xmlversion="1.0"encoding="utf-8"?>

<TableLayoutxmlns:android="/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"android:layout_height="fill_parent">

<TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content">

<TextViewandroid:background="#ffffffff"android:gravity="center"

android:padding="10dp"android:text="1"/>

<TextViewandroid:background="#ff654321"android:gravity="center"

android:padding="10dp"android:text="2"/>

<TextViewandroid:background="#fffedcba"android:gravity="center"

android:padding="10dp"android:text="3"/>

</TableRow>

<TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content">

<TextViewandroid:background="#ff654321"

android:gravity="center"android:padding="10dp"android:text="2"/>

<TextViewandroid:background="#fffedcba"

android:gravity="center"android:padding="10dp"android:text="3"/>

</TableRow>

<TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content">

<TextViewandroid:background="#fffedcba"

android:gravity="center"

android:padding="10dp"android:text="3"/>

<TextViewandroid:background="#ff654321"

android:gravity="center"android:padding="10dp"android:text="2"/>

<TextViewandroid:background="#ffffffff"

android:gravity="center"android:padding="10dp"android:text="1"/>

</TableRow>

</TableLayout>2021/3/2633Android入门基础培训ppt课件2021/3/2634Android入门基础培训ppt课件Android入门基础培训2021/3/2635Android入门基础培训ppt课件数据存储方式SharedPreferences文件SQLite数据库网络2021/3/2636Android入门基础培训ppt课件1.SharedPreferences

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存。

SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,对于常规的轻量级而言比SQLite要好不少。xml处理时Dalvik会通过自带底层的本地XMLParser解析,比如XMLpull方式,这样对于内存资源占用比较好。

它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:一、根据Context获取SharedPreferences对象二、利用edit()方法获取Editor对象。三、通过Editor对象存储key-value键值对数据。四、通过commit()方法提交数据。2021/3/2637Android入门基础培训ppt课件SharedPreferences示例public

classMainActivityextendsActivity{ @Override

public

voidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState); setContentView(R.layout.main);

SharedPreferencessp=getSharedPreferences("SP",MODE_PRIVATE); //存入数据

Editoreditor=sp.edit(); editor.putString("STRING_KEY","string"); editor.putInt("INT_KEY",0); editor.putBoolean("BOOLEAN_KEY",true); mit();

//返回STRING_KEY的值

Log.d("SP",sp.getString("STRING_KEY","none")); //如果NOT_EXIST不存在,则返回值为"none"

Log.d("SP",sp.getString("NOT_EXIST","none")); }}这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。

2021/3/2638Android入门基础培训ppt课件2.文件存储

关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。文件可用来存放大量数据,如文本、图片、音频等。默认位置:/data/data/<包>/files/***.***。

示例public

void

save()

{

try

{

FileOutputStream

outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);

outStream.write(text.getText().toString().getBytes());

outStream.close();

Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();

}

catch

(FileNotFoundException

e)

{

return;

}

catch

(IOException

e){

return

;

}

}

2021/3/2639Android入门基础培训ppt课件3.SQLite数据库存储

SQLite是轻量级嵌入式数据库引擎,它支持SQL语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla,PHP,Python)都使用了SQLite.SQLite由以下几个组件组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。Android集成了SQLite数据库Android在运行时(run-time)集成了SQLite,所以每个Android应用程序都可以使用SQLite数据库。

数据库存储在/data/datat/<项目文件夹>/databases/下。Android提供了SQLiteOpenHelper帮助你创建一个数据库,你只要继承SQLiteOpenHelper类,就可以轻松的创建数据库。SQLiteOpenHelper类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。

SQLiteOpenHelper的子类,至少需要实现三个方法:1

.构造函数,调用父类SQLiteOpenHelper的构造函数。这个方法需要四个参数:上下文环境(例如,一个Activity),数据库名字,一个可选的游标工厂(通常是Null),一个代表你正在使用的数据库模型版本的整数。2.

onCreate()方法,它需要一个SQLiteDatabase对象作为参数,根据需要对这个对象填充表和初始化数据。3.onUpgrage()方法,它需要三个参数,一个SQLiteDatabase对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。2021/3/2640Android入门基础培训ppt课件SQLite数据库示例//通过getReadableDatabase()和getWritableDatabase()可以获得数据库对象。

//提供onCreate()-创建数据库时,onUpgrade()-升级数据库时,两个回调函数。publicclassDatabaseHelperextendsSQLiteOpenHelper{//按要求必须要有构造函数

publicDatabaseHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){super(context,name,factory,version);}//当第一次得到SQLiteDatabase对象时,调用该方法@OverridepublicvoidonCreate(SQLiteDatabasedb){ Stringsql="createtableMSG(idint,bodyvarchar(100))"; db.execSQL(sql); System.out.println("创建了一个数据库!");}//当更新数据库时执行该方法@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ System.out.println("更新了数据库!"); //还可以写其他的操作}}2021/3/2641Android入门基础培训ppt课件SQLite操作(增、删、查、改)

getReadableDatabase()得到可读的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。getWritableDatabase()得到可写的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。

SQLiteDatabase类提供了对数据库的一些基本操作:insert()、delete()、query()、update()//生成ContentValues对象,key:列名,value:想插入的值ContentValuesvalues=newContentValues();values.put("id",1); values.put("body","hello"); DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,"text_msg",null,2);

//得到可写的SQLiteDatabase对象 SQLiteDatabasedb=dbhelper.getWritableDatabase();

//调用insert方法,将数据插入数据库 //参数1:表名

//参数2:如果你想插入空值,那么你必须指定它的所在的列db.insert("MSG",null,values);System.out.println("插入了:1,hello");插入数据2021/3/2642Android入门基础培训ppt课件SQLite操作(增、删、查、改)删除数据DatabaseHelper

dbhelper

=

new

DatabaseHelper(SqliteActivity.this,

"text_msg",

null,

2);

//得到可写的SQLiteDatabase对象

SQLiteDatabase

db

=

dbhelper.getWritableDatabase();

//调用delete方法,删除数据

db.delete("MSG",

"id=?",

new

String[]{"1"});

System.out.println("删除了:id=1");

2021/3/2643Android入门基础培训ppt课件SQLite操作(增、删、查、改)查询数据DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,"text_msg",null,2);

//得到可读的SQLiteDatabase对象 SQLiteDatabasedb=dbhelper.getReadableDatabase(); //参数1:表名 //参数2:要想显示的列 //参数3:where子句 //参数4:where子句对应的条件值 //参数5:分组方式 //参数6:having条件 //参数7:排序方式 Cursorcursor=db.query("MSG",newString[]{"id","body"},"id=?",newString[]{"1"},null,null,null);

System.out.println("查到的数据为:"); while(cursor.moveToNext()){ intid=cursor.getInt(cursor.getColumnIndex("id")); Stringname=cursor.getString(cursor.getColumnIndex("body"));System.out.println("-->"+id+"::::::::::"+name); }2021/3/2644Android入门基础培训ppt课件SQLite操作(增、删、查、改)修改数据ContentValuesvalues=newContentValues();values.put("body","mydear!");DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,"text_msg",null,2);

//得到可写的SQLiteDatabase对象 SQLiteDatabasedb=dbhelper.getWritableDatabase();

//调用insert方法,将数据插入数据库 //参数3:where子句"?"是占位符号,对应后面的"1",这和web开发时的语法是一样的 db.update("MSG",values,"id=?",newString[]{"1"});System.out.prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论