Android系统的四大组件:活动、服务、广播接收器、内容提供器。
在AndroidManifest.xml中注册活动:
<activity android:name=".HelloWorldActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
日志类型 | 对应级别 | 内容 |
Log.v() | Verbose | 最为琐碎、意义最小的日志 |
Log.d() | Debug | 一些调试信息 |
Log.i() | Info | 比较重要的数据 |
Log.w() | Warm | 警告 |
Log.e() | Error | 错误信息 |
Toast的使用实例:
Button button1=(Button) findViewById(R.id.XX);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(this,"you clicked",Toast.LENGTH_SHORT).show();
}
});
1, 获得button实例
2, 为button创建监听器
3, 在监听器中使用Toast方法
引申:自定义Toast布局的实例
LayoutInflater inflater=getLayoutInflater();
View layout=inflater.inflate(R.layout.XX,(ViewGroup)findViewById(R.id.XX));
Toast toast=new Toast(getApplicationContext());
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
Menu的使用实例:
1, 首先在res文件夹下创建menu类型的文件夹并创建一个新的xml布局文件,在布局文件中加入若干个item控件
2, 在Mainactivity中重载onCreateOptionsMenu()方法,获得新布局文件的实例。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
显式Intent的使用实例:
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
有明确的上下文和目标活动,“意图”明显
隐式Intent的使用实例:
帮助理解(Mainactivity.xml文件中):
<activity android:name=".SecondActivity2">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<action android:name="android.itent.category.DEFAULT"/>
</intent-filter>
</activity>
Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
这里使用了默认的category,还可增加多个category,实例如下:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.acitivitytest.MY_CATEGORY");
startActivity(intent);
帮助理解(Mainactivity.xml文件中):
<activity android:name=".SecondActivity2">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<action android:name="android.itent.category.DEFAULT"/>
<action android:name="com.example.acitivitytest.MY_CATEGORY"/>
</intent-filter>
</activity>
更多的隐式intent 的用法:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.setData(Uri.parse("http://www.baidu.com"))//跳转到一个网址
intent.setData(Uri.parse("tel:10086"))//跳转到系统拨号界面
startActivity(intent);
活动中的数据传递:
1, 向下一个活动传递数据
在FirstActivity中:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
String data="from MainActivity";
intent.putExtra("extra_data",data);
在SecondActivity中:
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity2",data);
2, 返回数据给上一个活动
上一个活动使用了startActivityForResult()方法,有两个参数,第一个参数是Intent,第二个参数是请求码。当前活动使用了setResult()方法,有两个参数,第一个参数用于向上一个活动返回处理结果,有两种选择:RESULT_OK、RESULT_CANCELED,第一个参数则把有数据的Intent传出去,最后用finish()销毁当前活动。
在FirstActivity中:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivityForResult(intent,1);
在SecondActivity中:
Intent intent=new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
活动的生命周期:
活动的启动模式:
启动模式 | 描述 |
standard | 每当启动一个新的活动,它就会在返回栈中入栈,且处于栈顶的位置,无论这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例 |
singleTop | 当活动为处于栈顶位置时,会创建新的实例。如果已经在返回栈的栈顶,则不再创建新的实例,而是直接使用它 |
singleTask | 启动该活动是会检查返回栈中是否存在该活动的实例,如果有则直接使用,并把该活动之上的所有活动统统出栈,没有则创建一个新活动实例 |
singleInstance | 指定一个新的返回栈来管理这个活动* |
*个人认为这个描述不够准确