Android——四大组件及其通信方式
1. Android中的四大组件
(1) Activiey:可以说是android中最重要的组件了,每一个android中都会有大量的Activity,其中有一个main activity是初次运行时进入的界面。activity是用户交互的组件,可以是一个全屏的,也可能是一个浮在其他窗口之上的一个小的窗口
(2) Service:后台服务的组件,例如后台进行的服务器数据拉取,查询系统更新等等。Service可以分为两种:
一种是本地服务,比如说查询升级信息等
另一种是远程服务,比如说查询天气预报等等
(3) ContentProvider:内容提供者。每一个android应用程序都有自己的一个ID,也是自己独立的一个进程,这样可以保护系统及其应用程序,避免受其他应用程序的影响。而provider是不同应用程序之间共享数据的唯一途径。获取其他应用的数据信息需要获取相应的权限,在AndroidManifest.xml中定义。自己也可以创建自己应用的provider来供其它程序来使用。
(4) BroadcastReceiver:广播接收器。接收广播通知信息,每个应用程序都可以拥有任意数量的广播接收器来对自己感兴趣的广播进行处理。广播接收器没有用户界面,可以通过启动一个activity来处理接收到的信息,或者通过用NotificationManager来通知用户。
private class nextClickListener implements View.OnClickListener { public void onClick(View v) { // TODO Auto-generated method stub /* Bundle bundle = new Bundle(); bundle.putString("name","zhangsan"); bundle.putInt("age",23); Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExtras(bundle); startActivity(intent); */ Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("name","zhangsan"); intent.putExtra("age",33); startActivity(intent); } }
Intent有两种信息传递方式,一种是通过Bundle来进行传递,Bundle:A mapping from String values to various Parcelable types
或者直接通过key-value来进行传递
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); tv = (TextView)findViewById(R.id.resultView); back = (Button)findViewById(R.id.back); back.setOnClickListener(new backClickListener()); Intent intent = getIntent(); String name = intent.getStringExtra("name"); int age = intent.getIntExtra("age",0); tv.append(name+age); }
在第二个activity中可以直接通过getIntent()来获取到相关的数据,依旧可以用key-value来获取。
(2) 可以通过类的Static 成员变量来进行传递,比如在secondActivity中定义一个static 成员变量,然后再firstActivity进行更改
(3) 当然可以通过单独的一个类设置一些静态成员变量来传递消息,这样的话两个类都是可以随时访问的