android复习数据存储.docx
- 文档编号:7567976
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:13
- 大小:116.13KB
android复习数据存储.docx
《android复习数据存储.docx》由会员分享,可在线阅读,更多相关《android复习数据存储.docx(13页珍藏版)》请在冰豆网上搜索。
android复习数据存储
Android中的单元测试
1配置manifest文件
xmlversion="1.0"encoding="utf-8"?
>
android=" package="com.xu.junittest" android: versionCode="1" android: versionName="1.0"> android: minSdkVersion="10" android: targetSdkVersion="10"/> android: allowBackup="true" android: icon="@drawable/ic_launcher" android: label="@string/app_name" android: theme="@style/AppTheme"> android: name="com.xu.junittest.MainActivity" android: label="@string/app_name"> name="android.intent.action.MAIN"/> name="android.intent.category.LAUNCHER"/> name="android.test.runner"/> name="android.test.InstrumentationTestRunner" android: targetPackage="com.xu.junittest" > 2编写单元测试代码 packagecom.xu.junittest.service; importjunit.framework.Assert; importandroid.test.AndroidTestCase; publicclassPersonServiceTestextendsAndroidTestCase { publicvoidtestSave()throwsException { PersonServiceservice=newPersonService(); service.save(null); } publicvoidtestAdd()throwsException { PersonServiceservice=newPersonService(); intresult=service.add(1,2); Assert.assertEquals(3,result); } } ***************************************************************************************************************************************************************** 使用SAX或者DOM或者PULL解析XML文件 在Android平台上可以使用SimpleAPIforXML(SAX),DocumentObjectModel(DOM)和Android附带的pull解析器解析XML文件 Person.xml xmlversion="1.0"encoding="utf-8"? > Person.java packagecom.pull.domain; publicclassPerson { privateIntegerid; privateStringname; privateIntegerage; publicIntegergetId() { returnid; } publicvoidsetId(Integerid) { this.id=id; } publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } publicIntegergetAge() { returnage; } publicvoidsetAge(Integerage) { this.age=age; } @Override publicStringtoString() { return"Person[id="+id+",name="+name+",age="+age+"]"; } } PersonService.java packagecom.pull.service; importjava.io.InputStream; importjava.util.ArrayList; importjava.util.List; importorg.xmlpull.v1.XmlPullParser; //importorg.xmlpull.v1.XmlPullParserFactory; importandroid.util.Xml; importcom.pull.domain.Person; publicclassPersonService { publicstaticList { List Personperson=null; //XmlPullParserpullPaeser=XmlPullParserFactory.newInstance().newPullParser(); XmlPullParserpullPaeser=Xml.newPullParser();//得到pull解析器 pullPaeser.setInput(xml,"UTF-8");//为pull解析器设置要解析的数据 intevent=pullPaeser.getEventType(); while(event! =XmlPullParser.END_DOCUMENT) { switch(event) { caseXmlPullParser.START_DOCUMENT: persons=newArrayList break; caseXmlPullParser.START_TAG: if("person".equals(pullPaeser.getName())) { intid=newInteger(pullPaeser.getAttributeValue(0)); person=newPerson(); person.setId(id); } if("name".equals(pullPaeser.getName())) { Stringname=pullPaeser.nextText(); person.setName(name); } if("age".equals(pullPaeser.getName())) { intage=newInteger(pullPaeser.nextText()); person.setAge(age); } break; caseXmlPullParser.END_TAG: if("person".equals(pullPaeser.getName())) { persons.add(person); person=null; } break; default: break; } event=pullPaeser.next(); } returnpersons; } /*保存数据到xml文件 * *@parampersons *@throwsException */ publicstaticvoidsave(List { XmlSerializerserilaize=Xml.newSerializer(); serilaize.setOutput(out,"UTF-8"); serilaize.startDocument("UTF-8",true); serilaize.startTag(null,"persons"); for(Personperson: persons) { serilaize.startTag(null,"person"); serilaize.attribute(null,"id",person.getId().toString()); serilaize.startTag(null,"name"); serilaize.text(person.getName()); serilaize.endTag(null,"name"); serilaize.startTag(null,"age"); serilaize.text(person.getAge().toString()); serilaize.endTag(null,"age"); serilaize.endTag(null,"person"); } serilaize.endTag(null,"persons"); serilaize.endDocument(); out.flush(); out.close(); } } Manifest.xml xmlversion="1.0"encoding="utf-8"? > android=" package="com.pull.xmlparse" android: versionCode="1" android: versionName="1.0"> android: minSdkVersion="8" android: targetSdkVersion="8"/> android: allowBackup="true" android: icon="@drawable/ic_launcher" android: label="@string/app_name" android: theme="@style/AppTheme"> android: name="com.pull.xmlparse.MainActivity" android: label="@string/app_name"> name="android.intent.action.MAIN"/> name="android.intent.category.LAUNCHER"/> name="android.test.runner"/> name="android.test.InstrumentationTestRunner" android: targetPackage="com.pull.xmlparse"> PersonServiceTest.java packagecom.pull.test; importjava.io.InputStream; importjava.util.List; importcom.pull.domain.Person; importcom.pull.service.PersonService; importandroid.test.AndroidTestCase; importandroid.util.Log; publicclassPersonServiceTestextendsAndroidTestCase { publicvoidtestPersons()throwsException { InputStreamxml=this.getClass().getClassLoader().getResourceAsStream("person.xml"); List for(Personperson: persons) { Log.i("PersonServiceTest",person.toString()); } } //保存一些数据到xml文件中 publicvoidtestsavePersons()throwsException { List persons.add(newPerson(43,"zhangshan",80)); persons.add(newPerson(42,"zhangshan1",80)); persons.add(newPerson(44,"zhangshan2",80)); persons.add(newPerson(45,"zhangshan3",80)); FilexmlFile=newFile(getContext().getFilesDir(),"file.xml"); FileOutputStreamout=newFileOutputStream(xmlFile); PersonService.save(persons,out); } } insertintoperson(name,number)values('zhangshan','10') select*frompersonwherename='zhangshan' updatepersonsetnumber='119'wherename='zhangshan' deletefrompersonwherename='zhangshan' 内容提供者(contentprovider) 创建一个内容提供者 1继承contentprovider 2并在配置文件中配置 3定义一个uri的匹配器用于匹配uri packagecom.hema.db; importandroid.content.ContentProvider; importandroid.content.ContentValues; importandroid.content.UriMatcher; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; import.Uri; publicclassPersonProviderextendsContentProvider{ //定义一个uri的匹配器用于匹配uri,如果路径不满足条件返回-1 privatestaticUriMatchermatcher=newUriMatcher(UriMatcher.NO_MATCH); privatestaticfinalintINSERT=1; privatestaticfinalintDELETE=2; privatestaticfinalintUPDATE=3; privatestaticfinalintQUERY=4; privatePersonSQLiteOpenHelperhelper=null; static { //添加一组匹配规则 matcher.addURI("com.hema.db.PersonProvider","insert",INSERT); matcher.addURI("com.hema.db.PersonProvider","delete",DELETE); matcher.addURI("com.hema.db.PersonProvider","update",UPDATE); matcher.addURI("com.hema.db.PersonProvider","query",QUERY); } // //content: //com.hema.db.PersonProvider/insert添加 //content: //com.hema.db.PersonProvider/delete添加 //content: //com.hema.db.PersonProvider/update添加 //content: //com.hema.db.PersonProvider/query添加 //当内容提供者被创建的时候调用适合数据初始化的操作 @Override publicbooleanonCreate(){ helper=newPersonSQLiteOpenHelper(getContext()); returnfalse; } @Override publicCursorquery(Uriuri,String[]projection,Stringselection, String[]selectionArgs,StringsortOrder){ if(matcher.match(uri)==QUERY) { //返回查询的结果集 SQLiteDatabasedb=helper.getReadableDatabase(); Cursorcursor=db.query("person",projection,selection,selectionArgs,null,null,sortOrder); returncursor; } else { thrownewIllegalArgumentException("路径不匹配,不能执行查询"); } } @Override publicStringgetType(Uriuri){ //TODOAuto-generatedmethodstub returnnull; } @Override publicUriinsert(Uriuri,ContentValuesvalues){ //TODOAuto-generatedmethodstub returnnull; } @Override publicintdelete(Uriuri,Stringselection,String[]selectionArgs){ //TODOAuto-generatedmethodstub return0; } @Override publicintupdate(Uriuri,ContentValuesvalues,Stringselection, String[]selectionArgs){ //TODOAuto-generatedmethodstub return0; } } Manifest.xml name="com.hema.db.PersonProvider" android: authorities="com.hema.db.personprovider" > 如何使用内容提供者 ContentResolverresolver=getContentResolver();使用获得的contentResolver对象对内容提供者进行增删改查的工作 packagecom.xu.providerother; import.Uri; importandroid.os.Bundle; importandroid.app.Activity; importandroid.content.ContentResolver; importandroid.database.Cursor; importandroid.view.View; publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 复习 数据 存储