关于Android开发数据存储方式(一)

在厦门做Android开发也有两个月了,快情人节了。我还在弄代码。

在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下:

整体的来讲。数据存储方式有三种:一个是文件,一个是数据库,还有一个则是网络。

当中文件和数据库可能用的稍多一些。文件用起来较为方便。程序能够自定义格式;数据库用起稍烦锁一些,但它有它的长处。比方在海量数据时性能优越。有查询功能,能够加密,能够加锁。能够跨应用。跨平台等等。网络,则用于比較重要的事情,比方科研,勘探,航空等实时採集到的数据须要立即通过网络传输到数据处理中心进行存储并进行处理。

对于Android平台来讲。它的存储方式也不外乎这几种,按方式整体来分,也是文件,数据库和网络。但从开发人员的角度来讲它能够分为下面五种方式: 

1.SharedPreferences共享偏好 

2.Internal Storage内部存储空间 

3.External Storage外部存储空间 

4.SQLite Database数据库 

5.Internet网络 

这几种方式各自有各自的长处和缺点,要依据不同的实际情况来选择,而无法给出统一的标准。以下就各种方式谈谈它们的优缺点,以及最合适的使用情况:

以下依据自己在开发中。分别做一下測试,先做一下简单的APP。帮组自己理解Android的数据存储:

(一)文件

事实上这个APP 也是在网上下载的,效果如图:

实现的功能:将网络上的一张图片下载到自己的收集里面。

如今就贴一下代码吧:1.MainActivity.java

package
com.test.learning;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;





public class MainActivity extends Activity implements Runnable {

private EditText urlText;

private Button button;

private Handler handler; // 声明一个Handler对象

private boolean flag = false;





@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

urlText = (EditText) findViewById(R.id.editText_url);

button = (Button) findViewById(R.id.button_go);

button.setOnClickListener(new OnClickListener() {





@Override

public void onClick(View v) {

Thread t = new Thread(CopyOfMainActivity.this);

t.start(); // 开启线程

handler = new Handler() {

@Override

public void handleMessage(Message msg) {

if (flag) {

Toast.makeText(CopyOfMainActivity.this, "文件下载完毕!",

Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(CopyOfMainActivity.this, "文件下载失败!",

Toast.LENGTH_SHORT).show();

}

super.handleMessage(msg);

}

};

}

});

}





@Override

public void run() {

try {

String sourceUrl = urlText.getText().toString();

URL url = new URL(sourceUrl);

HttpURLConnection urlConn = (HttpURLConnection) url

.openConnection();

InputStream is = urlConn.getInputStream(); // 获取输入流对象

if (is != null) {

String expandName = sourceUrl.substring(

sourceUrl.lastIndexOf(".") + 1, sourceUrl.length())

.toLowerCase();

String fileName = sourceUrl.substring(

sourceUrl.lastIndexOf("/") + 1,

sourceUrl.lastIndexOf("."));

File file = new File("/sdcard/pictures/" + fileName + "."

+ expandName);

FileOutputStream fos = new FileOutputStream(file);

byte buf[] = new byte[128];

while (true) {

int numread = is.read(buf);

if (numread <= 0) {

break;

} else {

fos.write(buf, 0, numread);

}

}

}

is.close(); // 关闭输入流对象

urlConn.disconnect();

flag = true;

} catch (MalformedURLException e) {

e.printStackTrace();

flag = false;

} catch (IOException e) {

e.printStackTrace();

flag = false;

}

Message m = handler.obtainMessage(); // 获取一个Message

handler.sendMessage(m); // 发送消息

}

}

2.main.xml代码

<?xml
version="1.0" encoding="utf-8"?

>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:background="@drawable/background"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    <EditText

    android:layout_weight="1" 

    android:id="@+id/editText_url" 

    android:layout_height="wrap_content" 

    android:layout_width="0dp"

    android:text="@string/defaultvalue"

    android:lines="1" />

    <Button 

    android:id="@+id/button_go" 

    android:layout_width="wrap_content" 

    android:layout_height="wrap_content"

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

 

</LinearLayout>

3.string.xml代码

<?xml
version="1.0" encoding="utf-8"?>

<resources>





    <string name="hello">Hello World, MainActivity!</string>

    <string name="app_name">14.5</string>

<string name="go">下载</string>

<string name="defaultvalue">http://p8.qhimg.com/dm/620_270_/t011685779b50979038.jpg</string>

</resources>

执行就能够得到如上的图。

关于Android开发数据存储的方式(一)的更多相关文章

  1. Android开发数据存储之ContentProvider详解

    转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可 ...

  2. Android开发--数据存储之File文件存储

    转载来自:http://blog.csdn.net/ahuier/article/details/10364757,并进行扩充 引言:Android开发中的数据存储方式 Android提供了5种方式存 ...

  3. android 开发-数据存储之文件存储

    android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时 ...

  4. android 开发-数据存储之共享参数

    android提供5中数据存储方式 数据存储之共享参数 内部存储 扩展存储 数据库存储 网络存储  而共享存储提供一种可以让用户存储保存一些持久化键值对在文件中,以供其他应用对这些共享参数进行调用.共 ...

  5. Android开发--数据存储之数据库操作

    简介: SQLite 的介绍: SQLite数据库属于文本型的数据库,它是以文本的形式来保存的.Android提供了对 SQLite 数据库的完全支持,应用程序中的任何类都可以通过名称来访问任何的数据 ...

  6. IOS开发数据存储篇—IOS中的几种数据存储方式

    IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...

  7. Android实现数据存储技术

    转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...

  8. Android中数据存储(四)——ContentProvider存储数据

    目录(?)[+]   当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方 ...

  9. Android中数据存储(一)

    国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...

随机推荐

  1. C/C++常用头文件 以及简单应用介绍

    C/C++头文件一览 C #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> ...

  2. Sqoop 是什么?(二)

    Sqoop 是传统数据库与 Hadoop 之间数据同步的工具,它是 Hadoop 发展到一定程度的必然产物,它主要解决的是传统数据库和Hadoop之间数据的迁移问题.Sqoop 是连接传统关系型数据库 ...

  3. C# 多线程系列(六)

    同步 当多个线程共享一些数据的时候,我们就需要使用同步技术,确保一次只有一个线程访问合改变共享状态.注意,同步问题与争用和死锁有关. 例: ; static void Add() { ; i < ...

  4. python基础篇(一)-------- 字符串的操作

    1.字符串的常用操作: 已知字符串:str = "hello world zhangsan and zhangsan" 1.字符串的长度:len(str) 2.查看字符串的索引值: ...

  5. html中设置浏览器解码方式

    通过添加一行标签: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"& ...

  6. 基于证书的MS SQL2005数据库镜像搭建

    一.准备工作: 3台服务器同版本,硬盘分区大小相同,安装相同版本数据库软件. host中分别标注3台服务器IP和主机名称. 主体服务器上创建数据库,并进行完整备份数据库和数据库事务. 拷贝备份文件给镜 ...

  7. 12、scala函数式编程集合

    1.Scala的集合体系结构 2.List 3.LikedList 4.Set 5.集合的函数式编程 6.函数式编程综合案例:统计单词总数 1.Scala的集合体系结构 Scala中集合体系主要包括: ...

  8. 关于java 关键字enum不识别的解决办法

    从别人那儿拷贝过来的myeclipse java工程,打开一看标红了一大片,仔细一看,原来是不识别enum关键字,这就有点尴尬了. 我自己重新建了一个java工程,测试了下,假如我在新建工程的时候选择 ...

  9. HDU_5734_数学推公式

    题意:给一个向量W={w1,w2……,wn},和一个向量B,B的分量只能为1和-1.求||W-αB||²的最小值. 思路:一来一直在想距离的问题,想怎么改变每一维的值才能使这个向量的长度最小,最后无果 ...

  10. VBA/VBScript提取Word(*.doc)文件中包含的图片(照片)

    VBA/VBScript提取Word(*.doc)文件中包含的图片(照片)   要处理的人事简历表是典型的Word文档,其中一人一份doc,里面包含有个人的照片,如果要把里面的照片复制出来就比较麻烦了 ...