Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 關於Android開發數據存儲的方式(一)

關於Android開發數據存儲的方式(一)

編輯:關於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 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代碼


android:orientation=horizontal
android:background=@drawable/background
android:layout_width=fill_parent
android:layout_height=fill_parent>
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 />

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved