編輯:關於Android編程
在android中有五種保存數據的方法,分別是:
Store data on the web with your own network server.網絡存儲
今天這一節我們一起來學習Shared Preferences 屬性文件存儲的方式來存儲簡單的數據
我們可以使用Shared Preferences 來存儲 booleans, floats, ints, longs, and strings型的簡單數據並以鍵值對的形式保存為xml文件。
為了實例化Shared Preferences 我們可以使用
getSharedPreferences()和getPreferences() 這兩個方法
第一個方法需要傳入一個文件名和存儲的模式
第二種方法默認為只有一個屬性文件,只需要傳入一個存儲模式就行了
存儲模式 :
MODE_PRIVATE僅本應用可用
MODE_APPEND可追加
MODE_WORLD_READABLE,可被其他應用讀
MODE_WORLD_WRITEABLE.可被其他應用寫
具體操作見代碼注釋
xml文件
package com.example.sharedpreferences;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private SharedPreferences sharedPreferences;
private Button saveData, getDate;
public static final String FILENAME = "flyou";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences(FILENAME, MODE_PRIVATE);
saveData = (Button) this.findViewById(R.id.button1);
getDate = (Button) this.findViewById(R.id.button2);
saveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "jay");
editor.putString("password", "553274238");
Boolean flag = editor.commit();
Toast.makeText(MainActivity.this, "執行完成,執行結果:-->" + flag, 2)
.show();
}
});
getDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String username = sharedPreferences.getString("username",
"未找到匹配信息");
String password = sharedPreferences.getString("password",
"未找到用戶密碼");
Toast.makeText(MainActivity.this,
"用戶名:——>" + username + ",密碼:——>" + password, 2).show();
}
});
}
}


接下來使用改方法來實現本地記住賬號和密碼的功能
裡面可能會涉及到一些沒有講到的知識,大家可以先了解下,也對前面學過的其他組件進行一下回顧
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+eG1szsS8/jwvcD4KPHA+1ve958PmPC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">
登錄後界面
JAVA文件
package com.example.sharepreferencesdemo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class MainActivity extends Activity {
private SharedPreferences sharedPreferences;
private Button login;
private CheckBox checkBox;
private EditText username, password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
login = (Button) this.findViewById(R.id.button1);
checkBox = (CheckBox) this.findViewById(R.id.checkBox1);
username = (EditText) this.findViewById(R.id.editText1);
password = (EditText) this.findViewById(R.id.editText2);
sharedPreferences = getPreferences(MODE_PRIVATE);// 通過getPreferences實例化sharedPreferences對象
String usernameString = sharedPreferences.getString("username", "");// 讀取用戶名
username.setText(usernameString);// 為編輯框設置內容
// 獲取復選框的選中狀態,如果選中的話就 進行記住密碼的操作
if (sharedPreferences.getBoolean("checked", false)) {
// 獲取密碼
String passwordString = sharedPreferences.getString("password", "");
// 設置編輯框信息
password.setText(passwordString);
}
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 通過edit 方法實例化Editor對象,儲存信息
SharedPreferences.Editor editor = sharedPreferences.edit();
// 以鍵值對的形式儲存信息
editor.putString("username", username.getText().toString());
editor.putString("password", password.getText().toString());
// 判斷復選框的選中狀態並進行存儲
if (checkBox.isChecked()) {
editor.putBoolean("checked", true);
} else {
editor.putBoolean("checked", false);
}
// 執行儲存操作
editor.commit();
// 設置進度對話框
final ProgressDialog dialog = new ProgressDialog(
MainActivity.this);
// 設置標題
dialog.setTitle("用戶登錄");
// 設置提示信息
dialog.setMessage("正在登錄,請稍後……");
// 開始進度對話框
dialog.onStart();
// 延時線程操作
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
// 休眠3秒
Thread.sleep(3 * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 對話框消失
dialog.dismiss();
// 設置意圖轉跳
Intent intent = new Intent(MainActivity.this,
main.class);
// 傳遞意圖信息
intent.putExtra("username", username.getText()
.toString());
// 開始activity轉跳
startActivity(intent);
MainActivity.this.finish();
}
}
}.start();// 開始線程操作
// 顯示對話框
dialog.show();
}
});
}
}
package com.example.sharepreferencesdemo;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;
public class main extends Activity {
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
super.setContentView(R.layout.linearlayout);
text=(TextView)this.findViewById(R.id.textView3);
Intent intent=getIntent();
text.setTextSize(15);
text.setGravity(Gravity.CENTER_HORIZONTAL);
text.setTextColor(Color.CYAN);
text.setText("歡迎: "+intent.getStringExtra("username"));
}
}


未點擊記住密碼,第二次登錄。

點擊記住密碼登錄

點擊記住密碼後,第三次登錄

介紹了SharedPreferences屬性文件的存儲,我們可以進行較小數據的快速存儲與便捷讀取
下節預報:Internal Storage內部存儲器
Android App的運行環境及Android系統架構概覽
Android基於linux內核,面向移動終端的操作系統。主要包括以下幾個方面:Application Framework:這一層為應用開發者提供了豐富的應用編程接口,如
Android項目從Eclipse增加支持Android Studio
使用Eclipse開發Android已經有些年頭了,然而Android Studio(後面簡稱AS)為谷歌自己推的IDE。現在AS已經出了2.0版本,其功能的確要比Ecl
Android React Native組件的生命周期
和Android一樣,React的組件也有對應的生命周期。Android React Native組件的生命周期可以總的概括為下面這一張圖。可以把組件生命周期大致分為三個
Android-Mac電腦如何進行APK反編譯-使用apktool、jd-gui
最近群裡有人問如何在mac下進行apk反編譯,我也沒試過,以前都是在windows下進行反編譯的,windows下很簡單,有許多比較好的集成工具,如apkide(改之理)