关于Android开发数据存储的四大方式

关于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 CopyOfMainActivity 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开发数据存储的四大方式

时间: 2024-08-03 03:33:05

关于Android开发数据存储的四大方式的相关文章

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

关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方式有三种:一个是文件,一个是数据库,还有一个则是网络. 当中文件和数据库可能用的稍多一些.文件用起来较为方便.程序能够自定义格式:数据库用起稍烦锁一些,但它有它的长处.比方在海量数据时性能优越.有查询功能,能够加密,能够加锁.能够跨应用.跨平台等等.网络,则用于比較重要的事情,比方科研,勘探,航空等

android开发-数据存储Ⅰ

本章讲述在Android开发中,简单的数据存储.涉及知识主要是SharedPreferences,及多页面切换ViewPager. 1.功能需求 做一个小应用.启动的时候有左右引导图.只有第一次启动时显示,看完以后,下一次启动就不会再显示了. 做两个Activity展示引导,引导后进入主界面 点击跳转下一页,主界面内容不限 第二次启动时不再显示引导界面,直接跳转应用主界面 2.软件实现 图1 图2 图3 简要说明:运行软件,进入图1界面,若第一次使用,软件在运行2秒后,自动跳转到引导界面.通过滑

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

android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时候缓存文件或内部文件将会被清除. 以下是开发学习中所写的示例代码,以供日后查阅: xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="

Android开发数据存储之ContentProvider详解

转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行添删改查.关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为Context.MODE_WORLD_READABLE或Context.MODE_W

(转载)Android数据存储三种方式总结

本文转载自:http://www.cnblogs.com/ITtangtang/p/3920916.html 本文介绍Android平台进行数据存储的三大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 其他: 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符

Android数据存储五种方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据     2 文件存储数据       3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等

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

IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都保存在APP所在的沙盒之中.一般有以下几种: 1.PList(XML属性列表) 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦 //写入文件 NSString *doc = [NSSearchPathForDirectoriesInDomains(

处女男学Android(十四)---Android 重量级数据存储之SQLite

前言 不知不觉的Android基础系列已经写了十三篇了,这是第十四篇~上一篇blog记录了Android中的一种数据存储方案,即共享参数(Sharedpreferences)的使用(处女男学Android(十三)---Android 轻量级数据存储之SharedPreferences).最近初学如何在Android中应用SQLite,写了一个基于ListView的增删查的小例子,本篇blog就记录一下我学习到的如何在Android中操作SQLite持久化客户端数据. 初始化SQLite 关于SQ