android存储方式选择,Android 存储变量的几种方法

在Android开发中,Service或Activity之间的通信会涉及到变量的传递和保存,以下是保存变量几种方法:

1、继承Application类

如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。

首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。

启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。下面举个例子详细介绍一下应用步骤。

MyApp.java

public class MyApp extends Application{

private String mylabel ;

public String getLabel(){

return mylabel;

}

public void setLabel(String s){

this.mylabel = s;

}

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

setLabel("Welcome!"); //初始化全局变量

}

}

MainActivity.java

public class MainActivity extends Activity {

private MyApp myApp;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myApp = (MyApp) getApplication(); //获得自定义的应用程序MyApp

Log.i("guoll", "InitLabel:"+myApp.getLabel());   //将我们放到进程中的全局变量拿出来,看是不是我们曾经设置的值

}

修改配置文件ApplicationManifest.xml,将要运行的应用程序MyApp加进去:

package="com.android.test"

android:versionCode="1"

android:versionName="1.0">

android:icon="@drawable/icon"

android:label="@string/app_name"

>

android:label="@string/app_name">

PS:非Activity好像不能用这种方法!

2,使用Preference

Preference(配置)提供了一种轻量级的数据存取方法,主要应用于数据比较少的配置信息。它以“key-value”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,手机的开机问候语,可以将其以Preference方式来进行配置。也可以保存一些用户个性化设置的字体、颜色、位置等参数信息。

android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据。有三种获取系统中保存的持久化数据的方式:

a. public SharedPreferences getPreferences (int mode)

通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文件的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity。

b. public SharedPreferences getSharedPreferences (String name, int mode)

因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一参数的name为文件名保存在系统中。

c. public static SharedPreferences getDefaultSharedPreferences (Context context)

PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。

通过以上方式取得SharedPreferences后就可以对数据进行读取或者保存了。

保存方式如下:

String STORE_NAME = "Settings";

SharedPreferences settings = getSharedPreferences(STORE_NAME, MODE_PRIVATE);

SharedPreferences.Editor editor = settings.edit();

editor.putInt("sourceType", 0);

editor.commit();

获得SharedPreferences,如果需要进行保存等修改操作,首先得通过其edit()方法获得SharedPreferences.Editor,然后就可以通过putInt、putString等方法以键值对(key-value)的方式保存数据,或者remove移除某个键(key),及调用clear方法删除所有内容。最后需要调用commit方法是使修改生效。

SharedPreferences settings = getSharedPreferences(STORE_NAME, MODE_PRIVATE);

int source = settings.getInt("sorceType", 1);

读取就更加简单了,只要获得SharedPreferences后,就可以通过getInt、getString等方法获取对应键(key)保存着的数据,如果没有找到key,则返回第二个参数作为默认值。

3,保存在数据库

数据库将单独介绍。

4,保存数据到静态文件

5,声明static 静态变量   在Android中不推荐使用。 总结:  每种方法都有各自的特点,在选择时请选择最合适的方法。文中有错误或者遗漏的地方请大家补充,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值