标签:
Android系统架构
Android大致可以分为四层架构,五块区域
1.Linux内核层
Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、Wi-Fi驱动、电源管理等。
2.系统运行库层
这一层通过一些C/C++库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。
同样在这一层还有Android运行时库,他主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。另外Android运行时库中还包含了Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况做了优化处理。
3.应用框架层
这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API来构建自己的应用程序。
4.应用层
所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是你从Google Play上下载的小游戏,当然还包括你自己开发的程序。
requestWindowFeature(Window.FEATURE_NO_TITLE)
不在活动中显示标题栏
注意这句代码一定要在setContentView()之前执行,不然会报错。
在活动中使用Menu
首先在res目录下新建一个menu文件夹,在这个文件夹下面新建一个名叫main的菜单文件main.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/add_item" android:title="Add" /> <item android:id="@+id/remove_item" android:title="Remove" /> </menu>
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.menu_main, menu); getMenuInflater().inflate(R.menu.main, menu); // 返回true表示允许创建的菜单显示出来 返回false创建的菜单将无法显示 return true; }
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.add_item: Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "you clicked Remove", Toast.LENGTH_LONG).show(); break; default: } return true; }
@Override public void onClick(View v) { finish(); }
Intent(Context packageContext, Class<?> cls)
显式Intent
Intent intent = new Intent(MAinActivity.this, SecondActivity.class); startActivity(intent);
隐式Intent
每个Intent中只能指定一个action,但却能指定多个category
<intent-filter> <action android:name="com.example.activity.ACTION_START" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.example.activity.MY_CATEGORY" /> </intent-filter>
Intent intent = new Intent("com.example.activity.ACTION_START"); intent.addCategory("com.example.activity.MY_CATEGORY"); startActivity(intent);
使用隐式Intent打开网页
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent);
<activity android:name=".ThirdActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" /> </intent-filter> </activity>
调用系统拨号界面
Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086"));
向下一个活动传递数据
String data = "Hello SecondActivity"; Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("extra_data", data); startActivity(intent);
Intent intent = getIntent(); String data = intent.getStringExtra("extra_data");
返回数据给上一个活动
Intent intent = new Intent(MainActivity.this, SecondActivity.class); // 1为请求码 startActivityForResult(intent, 1);
Intent intent = new Intent(); intent.putExtra("data_return", "Hello MainActivity"); // 第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值 setResult(RESULT_OK, intent); finish();
因此我们需要在MainActivity中重写onActivityResult()方法
/** * requestCode 请求码 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: if (resultCode == RESULT_OK) { String returnedData = data.getStringExtra("data_return"); Log.d("MainActivity", returnedData); } break; default: } }
重写onBackPressed()方法
@Override public void onBackPressed() { Intent intent = new Intent(); intent.putExtra("data_return", "Hello MainActivity"); setResult(RESULT_OK, intent); finish(); }
标签:
原文地址:http://blog.csdn.net/duanliuchang/article/details/51361537