編輯:關於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基於linux內核,面向移動終端的操作系統。主要包括以下幾個方面:Application Framework:這一層為應用開發者提供了豐富的應用編程接口,如
使用Eclipse開發Android已經有些年頭了,然而Android Studio(後面簡稱AS)為谷歌自己推的IDE。現在AS已經出了2.0版本,其功能的確要比Ecl
和Android一樣,React的組件也有對應的生命周期。Android React Native組件的生命周期可以總的概括為下面這一張圖。可以把組件生命周期大致分為三個
最近群裡有人問如何在mac下進行apk反編譯,我也沒試過,以前都是在windows下進行反編譯的,windows下很簡單,有許多比較好的集成工具,如apkide(改之理)