Bundle、Intent、SharedPreferences

Intent与Bundle的共同点:都继承Parcelable

Intent传值与Bundle传值的区别

eg:我现在要从A界面   跳转到B界面或者C界面   
这样的话 我就需要写2个Intent  如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle  直接把值先存里边 然后再存到Intent中 就更简洁吗?

eg:  如果我现在有  Activity A ,B ,C;
现在我要把值通过A经过B传给C
你怎么传 如果用Intent的话   A-B先写一遍   再在B中都取出来 然后在把值塞到Intent中 再跳到C   累吗?
如果我在A中用了 Bundle 的话  我把Bundle传给B 在B中再转传到C  C就可以直接去了 
这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value  同样可以在C中取出来

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。在Intent的使用中你看不到直接的函数调用,相对函数调用来说,Intent是更为抽象的概念,利用Intent所实现的软件复用的粒度是Activity/Service,比函数复用更高一些,另外耦合也更为松散。

理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。另外Intent除了发送外,还可用于广播,这些都将在后文进行详细讲述。

Intent和Bundle实现从一个Activity带参数转换到另一个Activity的代码例子

 1 if(et_username.getText().toString().equals("peidw") && et_password.getText().toString().equals("123456") ){
 2              Intent = new Intent();
 3                    Bundle bundle = new Bundle();
 4                    bundle.putString("USERNAME", et_username.getText().toString());
 5                    intent.putExtras(bundle);
 6                    intent.setClass(loginactive.this, informationactive.class);
 7                    startActivity(intent);
 8 }else{
 9                    intent = new Intent();
10                    intent.setClass(loginactive.this, errorpageactive.class);
12                    startActivity(intent);
13 }
 1 protected void onCreate(Bundle savedInstanceState) {
 2 super.onCreate(savedInstanceState);
 3 this.setContentView(R.layout.informationactive);
 4 tv = (TextView)findViewById(R.id.first_page_info);
 5 Bundle bundle = this.getIntent().getExtras();
 6 String str=bundle.getString("USERNAME");
 7 tv.setText(str);
 8 button_back = (Button)findViewById(R.id.back);
 9 button_back.setOnClickListener(new OnClickListener() {
10          public void onClick(View view) {
11                 Intent intent = new Intent();
12                 intent.setClass(informationactive.this,mainactive.class);
13                 startActivity(intent);
14          }
15    });

SharedPreferences是一种轻量级的数据存储机制,它将一些简单数据类型的数据,包括boolean类型、int类型、float类型、long类型以及String类型的数据,以键值对的形式存储在应用程序的私有Preferences目录(/data/data/<包名>/shared_prefs/中。这种Preferences机制广泛应用于存储应用 程序中的配置信息。

在Adndroid平台上,只需要用一个Context的对象调用getSharedPreferences(String name,int mode)方法传入Preferences文件名和打开模式,就可以获得一个SharedPreferences的对象。若该Preferences文件不存在,在提交数据后会创建该Preferences文件。利用SharedPreferences对象可以调用一些getter方法,传入相应的键来读取数据。要对Preferences文件的数据进行修改,首先利用SharedPreferences对象调用edit方法获得一个内部类Editor的对象,然后用这个Editor对象就可以对Preferences文件进行编辑了。注意,编辑完毕后一定要调用commit()方法,这样才会把所做的修改提交到Preferences文件当中去。下面是一个利用Preferences机制来保存Editor中所输入的字符串的示例。

 1 package com.action;
 2
 3 import android.app.Activity;
 4 import android.content.SharedPreferences;
 5 import android.os.Bundle;
 6 import android.widget.EditText;
 7
 8 public class Tab extends Activity {
 9     EditText edit;
10     SharedPreferences sp;
11     final static String NAME = "my_sp";
12     final static String EDIT_KEY = "edit";
13
14     /** Called when the activity is first created. */
15     @Override
16     public void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.main);
19
20         edit = (EditText) findViewById(R.id.edit);
21         sp = getSharedPreferences(NAME, 0);
22         String str = sp.getString(EDIT_KEY, null);
23         if(str != null){
24             edit.setText(str);
25         }
26     }
27     @Override
28     protected void onDestroy() {
29         super.onDestroy();
30         SharedPreferences.Editor editor = sp.edit();
31         editor.putString(EDIT_KEY, String.valueOf(edit.getText()));
32         editor.commit();
33
34     }
35 }  

SharedPreference数据以XML格式存放的。我们可以在 File Explorer中找到,目录为:data/data/包路径/shared_prefs

时间: 2024-10-18 02:45:17

Bundle、Intent、SharedPreferences的相关文章

说说 Activity、Intent、Service 是什么关系

他们都是 Android 开发中使用频率最高的类.其中 Activity 和 Service 都是 Android 四大组件之一.他俩都是Context 类的子类 ContextWrapper 的子类,因此他俩可以算是兄弟关系吧.不过兄弟俩各有各自的本领,Activity负责用户界面的显示和交互,Service 负责后台任务的处理.Activity 和 Service 之间可以通过 Intent 传递数据,因此可以把 Intent 看作是通信使者

Activity间用Intent、Bundle、onActivityResult进行传值

其实Activity间的传值就是通过Bundle,intent中也是自动生成了Bundle来传值,里面还有个onActivityResult()方法也可以传送数值. 如果一个Activity是由startActivityForResult启动的,那么这个activity在finish()后就会回调启动它的activity中的onActivityResult()方法. 下面是全部代码: MainActivity.java package com.kale.activity; import andr

记录:Intent、Intent过滤器和通用Intent

摘要:现在可以看中文的部分文档,可是内容真心不好记.看过之后就无名的又忘记了.还是摘抄一道的方式去加深记忆和当做一次笔记方便后面自己快速查找.记录一下,Intent,Intent的过滤和 常用的通用 Intent Intent ??intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中链接两个不同的组件.通过 intent,你的程序可以向 Android表带某种请求或者意愿,Android会根据意愿的内容适当的组件来完成请求.比如,有一个 activity 希

IPC机制——使用Bundle、文件共享、Messenger

两种较为简单的进程间通信方式. 一.使用Bundle 最简单的进程间通信方式,可直接利用Intent传递Bundle对象(Activity.Service.Receiver),Bundle支持基本数据类型以及序列化对象. 一种典型应用场景,当需要传递一计算结果至另一进程时,由于结果不支持使用Bundle直接传输,而其他IPC方法又过于复杂.此时可通过Intent启动另一进程的Service组件用于执行计算过程,计算结果可直接传输给统一进程内的目标组件. 二.使用文件 通过读写同一文件实现进程间通

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (三) —— SharePreferences 除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File 之 —— SQLite

本文在http://www.cnblogs.com/wisekingokok/archive/2011/09/14/2174844.html 基础上写了一个进阶的创建方式,技术能用新的就用新的. 参考了http://blog.csdn.net/liuhe688/article/details/6715983.仅供学习参考 SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大

Intent 中重要方法:setAction()、setData()、setType()、putExtra()

Intent大致分为两种:显式Intent和隐式Intent. 一.显示Intent为从一个activity跳转到另一个activity.如: Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); 二.隐式Intent它不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息来过滤,找到符合条件的Activity. 1.setAc

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Pro

【Android 初学】10、Intent对象的使用

Start Android 1.Intent对象的基本概念 1)Intent是Android应用程序组件之一: 2)Intent对象在Android系统当中表示一种意图: 3)Intent当中最重要的内容是action与data: 2.Intent对象的基本使用方法 3.使用Intent在Activity之间传递数据的方法 1)在Activity之间可以通过Intent对象传递数据: 2)使用putExtra()系列方法向Intent对象当中存储数据 3)使用getXXXExtra()系列方法从