Android开发从0开始(Activity篇)

Activity的生命周期

Android开发从0开始(Activity篇)_第1张图片

对应解释:

Android开发从0开始(Activity篇)_第2张图片

startActivity(new Intent(源页面.this,目标页面.class))    结束当前活动页面finish();

Activity的启动模式

  App先后打开两个活动,此时活动会放入栈内。

(Android:launchMode=standard)默认

(Android:launchMode=singleTop)栈顶复用(渠道多)

(Android:launchMode=singleTask)栈内复用(主界面)

(Android:launchMode=singleInstance)全局唯一模式。

动态设置模式

Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)设置启动标识,几十存在待跳转活动实例,清除上方所有实例,重新创建实例,保证栈中只有该活动的唯一实例。

Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)清空活动栈的所有实例。所以也要同时启动新任务栈   (Intent.FLAG_ACTIVITY_NEW_TASK)。场景例如登录页面。获取验证。

Intent各个组件之间数据传输

Android开发从0开始(Activity篇)_第3张图片

显示Intent:

①在Intent的构造函数中指定。

Intent intent= new Intent(FristActivity.this,second_layout.class);//创建指定目标明确的意图

②调用意图对象的setClass方法。

Intent intent =new Intent( ); //创建一个意图

Intent.setClass (this, ActNextActivity.class);//set设置意图跳转

③调用意图对象的setComponent方法。

Intent intent =new Intent( ); //创建一个意图

//创建包含目标活动在内的意图组件对象(可传类名,包名)

ComponentName componet = new ComponentName(this,ActNextActivity.class);

Intent.setCompent(component); //设置意图携带组件信息

隐士Intent:(没指定要跳转的活动目标,只给出一个动作字符串,系统自动匹配)

可通过setAction方法指定,或者构造函数Intent(STring action)常见系统动作。

Android开发从0开始(Activity篇)_第4张图片

示例:

Intent intent= new Intent();

//设置动作意图为准备拨号

intent.setAction(Intent.ACTION_DIAL);    

Uri uri= Uri.parse("tel"+phone);

intent.setData(uri);

startActivity(intent);

 其他隐intent使用:

Android开发从0开始(Activity篇)_第5张图片

向Activity发送数据:

向下一个activity传输数据

 Intent使用Bundle对象存放传递的数据信息。 Bundle对象读getExtras,写putExtras。

发                                        Bundle:是map数据结构     

 Intent intent = new Intent(this,Receiveactivity.class);

        Bundle bundle= new Bundle();

        bundle.putString("request_content",tv_send.getText().toString());

        intent.putExtras(bundle);

        startActivity(intent);

        setContentView(R.layout.activity_receiveactivity);

        tv_receive= findViewById(R.id.tv_receive);

        //从上面一个页面传来意图中获取快递包裹

        Bundle bundle= getIntent().getExtras();

        String request_content=bundle.getString("request_content");

        String desc= String.format("收到请求内容: %s",request_content);

        tv_receive.setText(desc);

向上一个activity返回数据

 下一个页面打包应答数据调用setResult方法返回数据包,上一个页面重写onActivityResult解析返回数据。

为activity补充附加信息

  ①利用资源文件配置字符串

    //从string.xml中获取名叫weather_str的值

    String value= getString(R.string.weather_str);

    tv_resource.setText(value);

②利用元数据传递配置信息

在AndroidManifest.xml中

(适合在第三方SDk,时候整合别人的源数据时候在全局配置里使用)

方法:调用getPackageManager方法获得当前活动的信息对象

调用包管理器的getActivityInfo方法获得当前活动下信息对象

  活动信息对象的metaData是Bundle包裹类型,调用包裹对象的getString获得参数            ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);

Bundle bundle = info.metaData;   //获取活动附加的元数据

  String weather =bundle.getString("weather");  //从bundle中获取.weather属性

③给页面注册快捷方式(长按app触发功能)

  

      android:shortcutId="first"

      android:enable="true"

      android:icon="@mipmap/ic_launcher"

      android:shortcutShortLabel="first"

      android:shortcutLongLable="启停活动">

      

          android:action="android.intent.action.VIEW"

          android:targetClass="android.app.Activity"

          android:targetPackage="com.example.test_application"

          />

      

  

你可能感兴趣的:(Android,android)