android:activity知识点

一、活动流程

1、创建活动

public class firstActivity extends Activity{}

2、创建布局

新建first_layout.xml文件

3、注册活动

在androidManifest.xml中注册活动

二、活动的几个功能点

1、隐藏标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

2、使用Toast。提醒方式,不获得焦点,一段时间消失

Toast.makeText(firstActivity.this,"hello world",Toast.LENGTH_SHORT).show();

3、从布局文件获得元素

Button button1=(Button)findViewById(R.id.button_1);

4、使用menu

           a.新建 android xml file来描述菜单main.xml

           b.创建菜单 。重写活动中onCreateOptionMenu()方法

      @Override
      public boolean onCreateOptionsMenu(Menu menu)
      {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
      }

           c.给菜单中选项添加响应。重写onOptionsItemSelected()方法

         @Override

        public boolean onOptionsItemSelected(MenuItem item){
        switch(item.getItemId()){
          case R.id.add_item:
          Toast.makeText(this, "add", Toast.LENGTH_SHORT).show();
          break;
          case R.id.remove_item:
          Toast.makeText(this, "remove", Toast.LENGTH_SHORT).show();
          break;
          default:
        }
        return true;
        }

5、销毁活动

finish();

三、活动之间相互调用。通过Intent类。有很多构造函数哦

1、显式启动另外一个活动。通过显式intent

Intent intent=new Intent(firstActivity.this,secondActivity.class);  //显示调用构建方法

startActivity(intent);

2、隐式启动另外一个活动。隐式intent

  a、在androidManifest.xml中给活动<activity>指定响应的action和category

  b、构建intent,带有响应标识

     Intent intent=new Intent("com.example.activitytest.ACTION_START"); 

     startActivity(intent);

3、启动其它程序中的活动。通过隐式intent

   a、启动系统内置浏览器

    Intent intent=new Intent(Intent.ACTION_VIEW);    //Intent.ACTION_VIEW常量为 “android.intent.action.view”

    intent.setData(Uri.parse("http://www.baidu.com"));

   b、启动内置拨号界面

   Intent intent=new Intent(Intent.ACTION_DIAL); 

   intent.setData(Uri.parse("tel:10086"));

4、向下一个活动传递数据

  a、向intent中写入数据

    intent.putExtra("extra_data","我是数据哦");

  b、从intent中取出数据

    Intent intent=getIntent();

    String data=intent.getStringExtra("extra_data");

5、向上一个活动传递数据

    a、在第一个活动中启动带返回值的第二个活动。

         startActivityForResult(intent,1);

    b、在第二个活动中,给intent中写入数据

           Intent intent=new Intent();

           intent.putExtra("data_return","我是待返回的数据哦");

           setResult(RESULT_OK,intent);

    c、在第一个活动中,接收数据。通过重写onActivityResult()方法

           @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
      switch(requestCode){
      case 1:
        if(resultCode==RESULT_OK){
      String retrundata=data.getStringExtra("data_return");
      Log.d("first",retrundata);
      }
      }

四、活动的生命周期

onCreate,onStart,onResume,onPause,onStop,onDestroy,onRestart

1、完整生存期  活动在onCreate和onDestroy方法之间所经历的,就是完整生存期。onCreate方法中完成初始化,onDestroy中释放内存

2、可见生存期  活动在onStart和onStop方法之间。可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。

3、前台生存期  活动在onResume和onPause方法之间。前台生存期内,活动总是处于运行状态,此时的活动是可以和用户进行交互的。

五、活动的启动模式

在androidManifest.xml中,可以设置活动的启动模式四种

1、standard模式:每当启动一个新活动,系统都会创建该活动的一个实例。而不管这个活动是否已经在返回栈中存在。导致创建多个活动实例

2、singleTop模式:启动活动时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,而不会再创建新的实例。但是如果该活动不在栈顶,则创建一个新的实例。导致创建多个活动实例

3、singleTask模式:启动活动时,系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

4、singleInstance模式:指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动。解决共享活动实例的问题。

原文地址:https://www.cnblogs.com/crhdyl/p/5059789.html