真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android數(shù)據(jù)操作,android的數(shù)據(jù)儲存方式

Android數(shù)據(jù)存儲之File總結(jié)

在使用File存儲App數(shù)據(jù)時(shí),我們需要了解Android系統(tǒng)的存儲系統(tǒng)。Android的存儲分為內(nèi)部存儲和外部存儲。

十多年的黃陵網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整黃陵建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“黃陵網(wǎng)站設(shè)計(jì)”,“黃陵網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

由于Android系統(tǒng)的廠商比較多,對于外部存儲目錄的定義有所不同,可能在根目錄下的mnt,sdcard和storage下。以storage為例,打開emulated/0目錄,外部存儲目錄就出現(xiàn)了。雖然可以通過多種路徑打開外部存儲文件,但是最終他們的路徑是相同的:

mnt:

storage:

sdcard:

外部存儲目錄下包含兩大類:公有目錄和私有目錄

私有目錄:

對比下來External有以下幾點(diǎn)優(yōu)點(diǎn):

缺點(diǎn):

內(nèi)部存儲與外部存儲權(quán)限申請對比如下:

首先我們要獲取外部存儲目標(biāo)文件的路徑:

然后確定自己需要?jiǎng)?chuàng)建的文件名,結(jié)合上面的到的路徑,創(chuàng)建一個(gè)File對象:

Android系統(tǒng)默認(rèn)數(shù)據(jù)清理的路徑是,內(nèi)部存儲目錄中相應(yīng)的cache文件夾中的文件和外部存儲中相應(yīng)的cache文件夾中的文件。

你的app的internal storage 目錄是以你的app的包名作為標(biāo)識存放在Android文件系統(tǒng)的特定目錄下[data/data/com.example.xx]。 從技術(shù)上講,如果你設(shè)置文件為可讀的,那么其他app就可以讀取你的internal文件。然而,其他app需要知道你的包名與文件名。若是你沒有設(shè)置為可讀或者可寫,其他app是沒有辦法讀寫的。因此只要你使用MODE_PRIVATE ,那么這些文件就不可能被其他app所訪問。

另外記住一點(diǎn),內(nèi)部存儲在你的APP卸載的時(shí)候,會一塊被刪除,因此,我們可以在cache目錄里面放置我們的圖片緩存,而且cache與files的差別在于,如果手機(jī)的內(nèi)部存儲空間不夠了,會自行選擇cache目錄進(jìn)行刪除,因此,不要把重要的文件放在cache文件里面,可以放置在files里面,因?yàn)檫@個(gè)文件只有在APP被卸載的時(shí)候才會被刪除。還有要注意的一點(diǎn)是,如果應(yīng)用程序是更新操作,內(nèi)部存儲不會被刪除,區(qū)別于被用戶手動(dòng)卸載。

不管你是使用 getExternalStoragePublicDirectory() 來存儲可以共享的文件,還是使用 getExternalFilesDir() 來儲存那些對于你的app來說是私有的文件,有一點(diǎn)很重要,那就是你要使用那些類似DIRECTORY_PICTURES 的API的常量。那些目錄類型參數(shù)可以確保那些文件被系統(tǒng)正確的對待。例如,那些以DIRECTORY_RINGTONES 類型保存的文件就會被系統(tǒng)的media scanner認(rèn)為是ringtone而不是音樂。

在開發(fā)中,不建議往內(nèi)部存儲中寫太多的數(shù)據(jù),畢竟空間有限。外部存儲在使用的時(shí)候最好能夠?qū)⑽募娣旁谒接心夸浵?,這樣有利于系統(tǒng)維護(hù),也避免用戶的反感。

徹底理解android中的內(nèi)部存儲與外部存儲

Android存儲挖坑記

緩存文件可以放在哪里?它們各自的特點(diǎn)是什么

如何進(jìn)行Android數(shù)據(jù)庫操作

Android數(shù)據(jù)庫操作類實(shí)例

實(shí)體類:UserInfo.java

package my.db;

import java.io.Serializable;

import android.graphics.drawable.Drawable;

public class UserInfo implements Serializable {

public static final String ID = "_id";

public static final String USERID = "userId";

public static final String TOKEN = "token";

public static final String TOKENSECRET = "tokenSecret";

public static final String USERNAME = "userName";

public static final String USERICON = "userIcon";

private String id;

private String userId; // 用戶id

private String token;

private String tokenSecret;

private String userName;

private Drawable userIcon;

//getter and setter省略

}

SqliteHelper類:

package my.db;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class SqliteHelper extends SQLiteOpenHelper{

//用來保存UserID、Access Token、Access Secret的表名

public static final String TB_NAME= "users";

public SqliteHelper(Context context, String name, CursorFactory factory, int version) {

super(context, name, factory, version);

}

//創(chuàng)建表

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL( "CREATE TABLE IF NOT EXISTS "+

TB_NAME+ "("+

UserInfo. ID+ " integer primary key,"+

UserInfo. USERID+ " varchar,"+

UserInfo. TOKEN+ " varchar,"+

UserInfo. TOKENSECRET+ " varchar,"+

UserInfo. USERNAME+ " varchar,"+

UserInfo. USERICON+ " blob"+

")"

);

Log. e("Database" ,"onCreate" );

}

//更新表

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL( "DROP TABLE IF EXISTS " + TB_NAME );

onCreate(db);

Log. e("Database" ,"onUpgrade" );

}

//更新列

public void updateColumn(SQLiteDatabase db, String oldColumn, String newColumn, String typeColumn){

try{

db.execSQL( "ALTER TABLE " +

TB_NAME + " CHANGE " +

oldColumn + " "+ newColumn +

" " + typeColumn

);

} catch(Exception e){

e.printStackTrace();

}

}

}

CRUD類DataHelper:

package my.db;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.util.ArrayList;

import java.util.List;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.Bitmap;

import android.graphics.drawable.Drawable;

import android.util.Log;

public class DataHelper {

// 數(shù)據(jù)庫名稱

private static String DB_NAME = "weibo.db";

// 數(shù)據(jù)庫版本

private static int DB_VERSION = 2;

private SQLiteDatabase db;

private SqliteHelper dbHelper;

public DataHelper(Context context) {

dbHelper = new SqliteHelper(context, DB_NAME, null, DB_VERSION );

db = dbHelper.getWritableDatabase();

}

public void Close() {

db.close();

dbHelper.close();

}

// 獲取users表中的UserID、Access Token、Access Secret的記錄

public ListUserInfo GetUserList(Boolean isSimple) {

ListUserInfo userList = new ArrayListUserInfo();

Cursor cursor = db.query(SqliteHelper. TB_NAME, null, null , null, null,

null, UserInfo. ID + " DESC");

cursor.moveToFirst();

while (!cursor.isAfterLast() (cursor.getString(1) != null )) {

UserInfo user = new UserInfo();

user.setId(cursor.getString(0));

user.setUserId(cursor.getString(1));

user.setToken(cursor.getString(2));

user.setTokenSecret(cursor.getString(3));

if (!isSimple) {

user.setUserName(cursor.getString(4));

ByteArrayInputStream stream = new ByteArrayInputStream(cursor.getBlob(5));

Drawable icon = Drawable.createFromStream(stream, "image");

user.setUserIcon(icon);

}

userList.add(user);

cursor.moveToNext();

}

cursor.close();

return userList;

}

// 判斷users表中的是否包含某個(gè)UserID的記錄

public Boolean HaveUserInfo(String UserId) {

Boolean b = false;

Cursor cursor = db.query(SqliteHelper. TB_NAME, null, UserInfo.USERID

+ "=?", new String[]{UserId}, null, null, null );

b = cursor.moveToFirst();

Log. e("HaveUserInfo", b.toString());

cursor.close();

return b;

}

// 更新users表的記錄,根據(jù)UserId更新用戶昵稱和用戶圖標(biāo)

public int UpdateUserInfo(String userName, Bitmap userIcon, String UserId) {

ContentValues values = new ContentValues();

values.put(UserInfo. USERNAME, userName);

// BLOB類型

final ByteArrayOutputStream os = new ByteArrayOutputStream();

// 將Bitmap壓縮成PNG編碼,質(zhì)量為100%存儲

userIcon.compress(Bitmap.CompressFormat. PNG, 100, os);

// 構(gòu)造SQLite的Content對象,這里也可以使用raw

values.put(UserInfo. USERICON, os.toByteArray());

int id = db.update(SqliteHelper. TB_NAME, values, UserInfo.USERID + "=?" , new String[]{UserId});

Log. e("UpdateUserInfo2", id + "");

return id;

}

// 更新users表的記錄

public int UpdateUserInfo(UserInfo user) {

ContentValues values = new ContentValues();

values.put(UserInfo. USERID, user.getUserId());

values.put(UserInfo. TOKEN, user.getToken());

values.put(UserInfo. TOKENSECRET, user.getTokenSecret());

int id = db.update(SqliteHelper. TB_NAME, values, UserInfo.USERID + "="

+ user.getUserId(), null);

Log. e("UpdateUserInfo", id + "");

return id;

}

// 添加users表的記錄

public Long SaveUserInfo(UserInfo user) {

ContentValues values = new ContentValues();

values.put(UserInfo. USERID, user.getUserId());

values.put(UserInfo. TOKEN, user.getToken());

values.put(UserInfo. TOKENSECRET, user.getTokenSecret());

Long uid = db.insert(SqliteHelper. TB_NAME, UserInfo.ID, values);

Log. e("SaveUserInfo", uid + "");

return uid;

}

// 添加users表的記錄

public Long SaveUserInfo(UserInfo user, byte[] icon) {

ContentValues values = new ContentValues();

values.put(UserInfo. USERID, user.getUserId());

values.put(UserInfo. USERNAME, user.getUserName());

values.put(UserInfo. TOKEN, user.getToken());

values.put(UserInfo. TOKENSECRET, user.getTokenSecret());

if(icon!= null){

values.put(UserInfo. USERICON, icon);

}

Long uid = db.insert(SqliteHelper. TB_NAME, UserInfo.ID, values);

Log. e("SaveUserInfo", uid + "");

return uid;

}

// 刪除users表的記錄

public int DelUserInfo(String UserId) {

int id = db.delete(SqliteHelper. TB_NAME,

UserInfo. USERID + "=?", new String[]{UserId});

Log. e("DelUserInfo", id + "");

return id;

}

public static UserInfo getUserByName(String userName,ListUserInfo userList){

UserInfo userInfo = null;

int size = userList.size();

for( int i=0;isize;i++){

if(userName.equals(userList.get(i).getUserName())){

userInfo = userList.get(i);

break;

}

}

return userInfo;

}

}

安卓手機(jī)數(shù)據(jù)遷移到安卓手機(jī)?怎么操作

舊手機(jī)數(shù)據(jù)遷移到新手機(jī)只需要借助手機(jī)中的QQ同步助手軟件,進(jìn)入后,找到軟件中的通訊錄軟件快速同步然后開啟進(jìn)行數(shù)據(jù)的遷移,系統(tǒng)會自動(dòng)進(jìn)行遷移,遷移完成后即可。具體步驟如下:

1、首先,找到手機(jī)中的QQ同步助手,然后點(diǎn)擊登錄。

2、登錄后,會出現(xiàn)如下界面,點(diǎn)擊立即開啟,然后進(jìn)入。

3、進(jìn)入后,找到頁面中的本機(jī)和云端合并去重選項(xiàng),然后點(diǎn)擊 。

4、這時(shí)候,系統(tǒng)就會開始進(jìn)行數(shù)據(jù)的遷移了,遷移完成后會出現(xiàn)如下提示。

注意事項(xiàng):

在進(jìn)行實(shí)際的遷移 之前,最好進(jìn)行殺毒和數(shù)據(jù)的清理,避免遷移不必要的數(shù)據(jù),造成內(nèi)存的占用。

請問怎樣在Android系統(tǒng)手機(jī)上操作開啟、關(guān)閉數(shù)據(jù)上網(wǎng)功能?

手機(jī)一鍵開啟、關(guān)閉數(shù)據(jù)上網(wǎng)的操作方式(Android)如下:

1、Android系統(tǒng)手機(jī):

(1)以MOTOXT800為例:

第一步:選擇任一主屏,選擇空白處點(diǎn)按住可看到主屏上彈出“添加到主屏幕”菜單;

第二步:點(diǎn)按選擇“窗口小部件”;

第三步:點(diǎn)按選擇“接入點(diǎn)控制”;

第四步:看到“接入點(diǎn)控制”工具條成功拖放在主屏空白桌面上;

第五步:您將在工具條上看到一個(gè)雙向箭頭的標(biāo)志,點(diǎn)擊箭頭顏色變亮表示數(shù)據(jù)網(wǎng)絡(luò)開啟,點(diǎn)擊箭頭顏色變灰表示數(shù)據(jù)網(wǎng)絡(luò)關(guān)閉??梢噪S心所欲的一鍵控制手機(jī)數(shù)據(jù)上網(wǎng)。

(2)以酷派N930為例:

第一步:找到手機(jī)屏幕頂端“通知”工具條;

第二步:將工具條向下拉;

第三步:看到有“啟用網(wǎng)絡(luò)”鍵;

第四步:點(diǎn)按“啟用網(wǎng)絡(luò)”即可開啟網(wǎng)絡(luò),再點(diǎn)按“關(guān)閉網(wǎng)絡(luò)”,即可關(guān)閉網(wǎng)絡(luò)。


分享標(biāo)題:android數(shù)據(jù)操作,android的數(shù)據(jù)儲存方式
本文URL:http://weahome.cn/article/hopoed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部