当前位置: 首页 > news >正文

网站打开慢的原因微信商城开发推荐华网天下

网站打开慢的原因,微信商城开发推荐华网天下,电商网站开发商,wh网站建设第07节 ListView 1.当我们的程序中有大量的数据需要展示的时候#xff0c;就可以借助 ListView 来实现。ListView 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内#xff0c;同时屏幕上原有的数据则会滚动出屏幕。 ListView 的简单用法 1.listView数据的添…第07节  ListView 1.当我们的程序中有大量的数据需要展示的时候就可以借助 ListView 来实现。ListView 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内同时屏幕上原有的数据则会滚动出屏幕。 ListView 的简单用法 1.listView数据的添加  ListView 控件的android:entries 属性设置。 2数组中的数据是无法直接传递给ListView 的我们还需要借助适配器来完成。Android 中提供了很多适配器的实现类其中我认为最好用的就是 ArrayAdapter。它可以通过泛型参数化类型类似于方法中的变量参数来指定要适配的数据类型然后在构造函数中把要适配的数据传入即可 1.FruitAdapter 重写了父类的一组构造函数用于将上下文、ListView 子项布局的 id 和数据都传递进来。另外又重写了 getView()方法这个方法在每个子项被滚动到屏幕内的时候会被调用其中参数position 标识我们现在正在绘制 ListView 中第几个 ite m 2.在 getView 方法中首先通过getItem()方法得到当前项的 Fruit 实例然后使用 La youtInflater 来为这个子项加载我们传入的布局接着调用 View 的 findViewById()方法分别获取到 ImageView 和 TextView 的实例并分别调用它们的 setImageResource()和 setT ext()方法来设置显示的图片和文字最后将布局返回这样我们自定义的适配器就完成 3.我们一般在给一个 activity 设定一个视图的时候都用的是 setContentView 这个方法来直接指定布局文件但是 activity 中早已经内置了指定视图的工具 LayoutInflater。这个工具就像是一个压力泵能够把布局文件压缩成一个视图呈现出来。它的作用类似于 findViewById()不同点是 LayoutInflater 是用来找 layout 下 xml 布局文件并且实例化而 findViewById()是找具体 xml 下的具体 widget 控件。 getView()方法一共有三个参数position 标识我们现在正在绘制ListView中第几个 itemconvertView 相当于一个 view 控件的缓存装置它将我们定义好显示每一行 item 的布局文件压缩成一个视图布局中的部分 view 都在它里面。 ListView 的点击事件  使用了    setOnItemClickListener()  方法来为 ListView 注册了一个监听器当用户点击了 ListView 中的任何一个子项时就会回调  onItemClick()    方法 第08节  数据持久化简介 1.数据持久化就是指将那些内存中的瞬时数据保存到存储设备中保证即使在手机或电脑关机的情况下这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的而保存在存储设备中的数据是处于持久状态的持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。 2.实现数据持久化三种方式即  文件存储、SharedPreferences存储以及 SQLite 数据库存储。 3.内部存储是指应用程序中的数据以文件方式存储到设备内部中。当创建的应用程序被卸载时其内部存储文件也随之被删除。 4.Context 类中提供了一个     openFileOutput()方法可以用于将数据存储到指定的文件中。 openFileOutput()方法返回的是一个FileOutputStream 对象文件输出流得到了这个对象之后就可以使用字节流的方式将数据写入到文件中 5.如何将一段文本内容保存到文件中 通过 openFileOutput()方法能够得到一个 FileOutputStream 对象文件输出流然后使用它的 write()方法将文本内容写入到文件中但是 write()方法需要一个字节数组参数我们通过字符串的 getBytes()方法可以将字符串转化为一个字节数组。最后一定要关闭文件输出流。 6.使用 Environment 类的getExternalStorageState()方法来判断 S D 卡是否存在可用。使用 getExternalStorageDirectory()方法来获取 SD 卡根目录的路径 这样可以避免由于手机厂商不同而导致 SD 路径不同的问题。 7.添加 SD 卡的读写权限示例代码如下 uses-permissionandroid:nameandroid.permission.WRITE_EXTERNAL_STORAGE / uses-permissionandroid:nameandroid.permission.READ_EXTERNAL_STORAGE / SharedPreferences 存储  不同于文件的存储方式SharedPreferences 是使用键值对的方式来存储数据的保存为.xml 文件。 8. 三种方法用于得到 SharedPreferences对象 1.Context 类中的getSharedPreferences()方法指定文件名 2.Activity 类中的 getPreferences()方法固定文件名这个方法 3.PreferenceManager 类中的getDefaultSharedPreferences()方法固定文件名 (1.调用SharedPreferences 对象的edit()方法获取一个SharedPreferences.Editor对象。 (2.向 SharedPreferences.Editor对象中添加数据比如添加一个布尔型数据就使用 p utBoolean()方法添加一个字符串则使用 putString()方法以此类推。 (3.调用 commit()方法将添加的数据提交从而完成数据存储操作。下面通过一个例子来体验一下 SharedPreferences 存储的用法吧。 4.从 SharedPreferences 中读取数据 SharedPref erences 对象中提供了一系列的get 方法用于对存储的数据进行读取每种 get 方法都对应了SharedPreferences.Editor 中的一种 put 方法比如读取一个布尔型数据就使用 g etBoolean()方法读取一个字符串就使用getString()方法。这些 get 方法都接收两个参数第一个参数是键传入存储数据时使用的键就可以得到相应的值了第二个参数是默认值即表示当传入的键找不到对应的值时会以什么样的默认值进行返回。 1.SQLiteOpenHelp er 帮助类借助这个类就可以非常简单地对数据库进行创建和升级。 首先你要知道 SQLiteOpenHelper 是一个抽象类这意味着如果我们想要使用它的话就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper 中有两个抽象方法分别是 onCreate()和 onUpgrade()我们必须在自己的帮助类里面重写这两个方法然后分别在这两个方法中去实现创建、升级数据库的逻辑。 SQLiteOpenHelper 中还有两个非常重要的实例方法getReadableDatabase()和 get WritableDatabase()。这两个方法作用和区别这两个方法都可以创建或打开一个现有的数据库如果数据库已存在则直接打开否则创建一个新的数据库并返回一个可对数据库进行读写操作的对象。不同的是当数据库不可写入的时候如磁盘空间已满getReadableDatabase() 方法返回的对象将以只读的方式去打开数据库而 getWritableDatabase()方法则将出现异常。 上述代码就是 Android 中事务的标准用法首先调用【【SQLiteDatabase【【的       【【beginTransaction()【【方法来开启一个事务然后在一个异常捕获的代码块中去执行具体的数据库操作当所有的操作都完成之后调用【【setTransactionSuccessful()【【表示事务已经执行成功了最后在 finally 代码块中调用 endTransaction()来结束事务。 第09节  内容提供者ContentProvider 1、内容提供者简介 内容提供者ContentProvider是 Android 系统组件之一主要用于在不同的应用程序之间实现数据共享的功能它提供了一套完整的机制允许一个程序访问另一个程序中的数据同时还能保证被访数据的安全性。目前使用内容提供者是 Android 实现跨程序共享数据的标准方式。 图重点 内容提供者的用法一般有两种一种是使用 ContentResolver内容解析者访问现有的内容提供者暴露的相应程序中的数据另一种是创建自己的内容提供者为我们程序的数据提供外部访问接口。 1ContentResolver内容解析者的基本用法对于每一个应用程序来说如果想要访问内容提供者中共享的数据就一定要借助【【 ContentResolver【【内容解析者类可以通过 Context中的【【 getContentResolver()【【方法 获取到该类的实例。ContentResolver 中提供了一系列的方法用于对数据进行 CRUD 操作其中 insert()方法用于添加数据update()方法用于更新数据delete()方法用于删除数据 query()方法用于查询数据。 内容 URI 给内容提供者中的数据建立了唯一标识符它主要由两部分组成权限authority和路径path。权限是用于对不同的应用程序做区分的一般为了避免冲突都会采用程序包名的方式来进行命名。比如某个程序的包名是 com.sdbi.app那么该程序对应的权限就可以命名为 com.sdbi.app.provider。路径则是用于对同一应用程序中不同的表做区分的通常都会添加到权限的后面。 内容 URI 最标准的格式写法如下 content://com.sdbi.app.provider/table1 content://com.sdbi.app.provider/table2 1创建内容提供者的步骤 1.定义一个类继承ContentProvider 2.定义匹配规则 UriMatcher 3.通过静态代码块添加匹配规则 4.一定要记得在清单文件配置内容提供者不要忘记加 authorities。 ContentProvider 类中有六个抽象方法我们在使用子类继承它的时候需要将这六个方法全部重写。onCreate() 初始化内容提供者的时候调用。通常会在这里完成对数据库的创建和升级等操作返回 true 表示内容提供者初始化成功返回 false 则表示失败。注意只有当存在 Con tentResolver内容解析者尝试访问我们程序中的数据时内容提供者才会被初始化。 query() 从内容提供者中查询数据。使用 uri 参数来确定查询哪张表projection 参数用于 确定查询哪些列selection 和 selectionArgs 参数用于约束查询哪些行sortOrder 参数 用于对结果进行排序查询的结果存放在 Cursor 对象中返回。 insert() 向内容提供者中添加一条数据。使用 uri 参数来确定要添加到的表待添加的数据保存在 values 参数中。添加完成后返回一个用于表示这条新记录的 URI。 update() 更新内容提供者中已有的数据。使用 uri 参数来确定更新哪一张表中的数据新数据保存在 values 参数中selection 和 selectionArgs 参数用于约束更新哪些行受影响的行数将作为返回值返回。 delete() 从内容提供者中删除数据。使用 uri 参数来确定删除哪一张表中的数据selection 和selectionArgs 参数用于约束删除哪些行被删除的行数将作为返回值返回。 getType() 根据传入的内容 URI 来返回相应的 MIME 类型Multipurpose Internet Mail Exten sions多用途互联网邮件扩展类型。 一个内容 URI 所对应的 MIME 字符串主要由三部分组分Android 对这三个部分做了如下格式规定。 1.必须以 vnd 开头。 2.如果内容 URI 以路径结尾则后接android.cursor.dir/如果内容 URI 以 id 结尾则后接 android.cursor.item/。 3.最后接上 vnd.authority.path。 第10节广播接收者BroadcastReceiver BroadcastReceiver 也就是“广播接收者”的意思它就是用来接收来自系统和应用中的广播。 之所以叫做广播就是因为它只负责“说” 而不管你“听不听”也就是不管你接收方如何处理。此外广播可以被不止一个应用程序所接收当然也可能不被任何应用程序所接收。 因此广播机制最大的特点就是发送方并不关心接收方是否接到数据也不关心接收方是如何处理数据的 Android 中的广播主要可以分为两种类型标准广播和有序广播。 标准广播Normal broadcasts是一种完全异步执行的广播 有序广播Ordered broadcasts则是一种同步执行的广播 注册广播的方式一般有两种在代码中注册和在 AndroidManifest.xml 中注册其中前者也被称为动态注册后者也被称为静态注册。 动态注册的生命周期跟程序的生命周期是一样的程序关闭后动态注册的广播是不能在接收到广播的静态注册是当程序关闭后如果有广播发过来还能启动程序。 动态注册的优点在 Android 的广播机制中动态注册的优先级高于静态注册的优先级因此在必要情况下我们需要动态注册广播接收器。 静态注册的有点无需担心广播接收器是否关闭只要设备处于开启状态广播接收器就能接收。 动态注册监听网络变化 如何创建一个广播接收者呢其实只需要新建一个类让它继承自BroadcastRecei ver并重写父类的 onReceive()方法就行了 其实这基本上就和前面所学的动态注册广播接收器以及发送广播的代码是一样。 只不过现在首先是通过 LocalBroadcastManager 的 getInstance()方法得到了它的一个实例然后在注册广播接收器的时候调用的是 LocalBroadcastManager 的 registerReceiver() 方法在发送广播的时候调用的是 LocalBroadcastManager 的 sendBroadcast()方法仅此而已。 本地广播的几点优势1.可以明确地知道正在发送的广播不会离开我们的程序因此不需要担心机密数据泄漏的问题。2.其他的程序无法将广播发送到我们程序的内部因此不需要担心会有安全漏洞的隐患。3.发送本地广播比起发送系统全局广播将会更加高效。 builder.setSmallIcon(R.drawable.ic_launcher);// 设置通知小图标 builder.setContentTitle(标题); // 设置通知标题builder.setContentText(内容); // 设置通知内容 PendingIntent 从名字上看起来就和Intent 有些类似都可以去指明某一个“意图”都可以用于启动活动、启动服务以及发送广播等。不同的是Intent 更加倾向于去立即执行某个动作而 PendingIntent 更加倾向于在某个合适的时机去执行某个动作。所以也可以把 PendingIntent 简单地理解为延迟执行的 Intent。它可以设置执行次数主要用于远程服务通信、闹铃、通知、启动器、短信中。 这里先是使用Intent表达出我们想要启动NotificationActivity 的“意图”然后将构建好的 Intent 对象传入到 PendingIntent 的 getActivity()方法里以得到 Pendin gIntent 的实例 pi再通过 setContentIntent()方法设置通知栏点击意图。 Android四大基本组件分别是ActivityService服务,Content Provider内容提供者BroadcastReceiver广播接收器
http://www.yutouwan.com/news/403441/

相关文章:

  • 上海网站建设网页制作怎么样周口网站建设 网站制作 网络推广
  • 南宁网站制作开发公司泰安千橙网站建设优化熊掌号
  • 做便宜网站珠海网站建设制作
  • 查询网站流量的网址微网站域名
  • 做外单网站有哪些建设银行啦卡信用网站
  • 和男人人做的网站深圳建网站三千
  • 思政网站建设管理自查报告学历提升快速拿证
  • 有没有专门做橱窗的案例网站网站制作 徐州
  • 设计网站的一般过程网站中链接怎么做
  • 如何建设社交网站wordpress安装主题后不够
  • 网站建设调研论文阿里云有了域名 网站建设
  • 商会网站设计网站策划ps
  • 班级网站网页设计做图表好看的网站
  • 怎样在网站上做免费的推广wordpress开发文档下载
  • 坪地网站制作网站手机网站制作
  • 什么网站可以免费做视频it运维培训
  • 国外设计文章的网站网站宣传册怎么做的
  • 辽宁注册公司网站企业网站建设应注意什么
  • 宁波建设协会网站关键词优化是什么意思
  • 公司做网站的费用怎么账务处理智通人才网东莞最新招聘信息官网
  • 安徽静安集团网站建设深圳网站建设公司 概况
  • 宁波网站建设哪家比较好怎么在网上卖东西视频
  • 网站建设十大公司临河网站建设
  • 大连网站制作团队高校网站建设说明书
  • 无锡个人网站建设世界十大著名室内设计师
  • 在线报名网站建设如何建立设计一个公司网站
  • 知名做网站哪家好摄影网站模版
  • 怎样使用仿站小工具做网站ppt模板大全百度云
  • 微信网站是怎么做的高密市住房和城乡建设局网站
  • wordpress评论ajax加载seo公司运营