一丶什么是活动(Activity)
活动是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含零个或多个活动.
二丶活动的基本用法
首先需要在AndroidManif中对活动进行注册:
<activity>
......
</activity>
还可以在Acitiviy的类中的OnCreate方法中用requestWindowFeature方法指定活动的标题栏
当然可以使用findViewById()方法来使用在资源文件里加载的资源。如: Button button=(Button)findViewById(R.id.button);
Toast的用法:Toast.makeText(Activity.this,"",Toas.键参).show();
在活动中使用菜单,当然还是需要先在res中创建菜单的xml文件,然后在Activity类中重写onCreateOptionMenu()方法
pubilc boolean onCreateOptionMenu()
{
getMenuInflater().inflate(R.menu.菜单名,menu);
return true;
}
如果要响应菜单的点击事件的话就需要在重写onOptionsItemSelected(MenuItem item)方法,使用switch(item.getItemid()) 进行判断就行了。
在不同的活动之间穿梭:使用Intent
显式调用
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
隐式调用
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
还可以使用intent.setData()方法更多的显示调用。比如如果要打开百度:intent.setData(Url.parse("http://www.baidu.com"));
如果要打开电话:intent.setData(Url.parse("tel:10086"));
Intent还可以用来在活动之间传递数据,它提供了putExtra()方法。
Activity1: intent = new Intent(Activity1.this,Activity2.class);
intent.putExtra("extra_data",data);
Activity2: intent = getIntent();
String data = intent.getStringExtra("extra_data");
如果需要返回数据给上一个活动,那么需要使用startActivityForResult()来启动子活动,然后在子活动中使用setResul方法,在主活动中重写 onActivityResult(),在onActivityResult()中通过switch(reuestCode)来判断是哪一个子活动,该值在启动子活动时指定。
活动的生命周期:
1.onCreate() 2.onStart() 3.onResume() 4.onPause() 5.onStop() 6.onDestroy()
7.onRestart()
完整生存期:onCreate和onDestroy之间所经历的
可见生存期:onStart和onStop之间所经历的
前台生存期:onResum和onPause之间所经历的
活动的启动模式:
1.standard(缺省)
2.SingleTop :在启动时如果发现返回栈的栈顶已经是该活动,则认为可以之间使用它,不会再创建新的活动实例。
3.SingleTask :在启动时首先检查返回栈中是否存在该活动是实例,如果发现已经存在则直接使用该实例,并且把在这个活动之 上的所以活动统统出栈,如果没有发现就创建一个新的活动实例。
4.SingleInstance :会指定一个新的返回栈来管理该活动。(解决共享活动实例)
活动实践:
1.知晓当前是在哪一个活动: 新建一个BaseActivity使其它的活动都继承于它,然后在onCreate()中 Log.d("BaseActivity",
getClass().getSimpleName());
2.随时随地退出程序:新建个ActivityCollector类作为活动管理器,使用List<Activity>activities来管理。