显示和隐式启动Activity的方式

 

 启动Activity主要是通过Intent(意图)来实现。主要分为显示的和隐式的两种。

1、隐式启动Activity
      优点:只要知道被启动Activity的Action和Category即可,不用知道对应的类名或者是包名。
                 只要Activity有对应的action和Category都会被启动起来。然后提供给用户选择要启动哪一个。

     需要被启动的Activity,需要在自己的AndroidManifest.xml定义对应的action 和 category。     
        <activity
            android:name="com.android.activity.demo.SecondActivity"
            android:label="@string/second_activity_name" >
            <intent-filter>
                <action android:name="android.intent.action.SECONDACTIVITY_START" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

      
     启动Activity的地方,把对应的Action填入即可。
    private void startSecondActivityByAction() {
        XLog.i(TAG, "startSecondActivityByAction()");
        Intent intent = new Intent();
        intent.setAction("android.intent.action.SECONDACTIVITY_START");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        try {
            startActivity(intent);
        } catch (Exception e) {
            XLog.i(TAG, "start activity error!");
        }
    }


2、显式的启动

2.1 、通过类名类启动Activity, 一般是同一个APK里面使用
    private void startSecondActivityByClass() {
        XLog.i(TAG, "startSecondActivityByClass()");
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        try {
            startActivity(intent);
        } catch (Exception e) {
            XLog.i(TAG, "start activity error!");
        }
    }

2.2、 通过包名加类名启动
           不足:被启动的应用的包名或者类名发生变化后,就会无法启动。
    private void startSecondActivityByPackageName() {
        XLog.i(TAG, "startSecondActivityByPackage()");
        Intent intent = new Intent();
        intent.setClassName(getPackageName(), getPackageName() + ".SecondActivity");
        try {
            startActivity(intent);
        } catch (Exception e) {
            XLog.i(TAG, "start activity error!");
        }
    }


2.3 、通过ComponentName启动
        不足:被启动的应用的包名或者类名发生变化后,就会无法启动。
    private void startSecondActivityByComponent() {
        XLog.i(TAG, "startSecondActivityByComponent()");
        Intent intent = new Intent();
        intent.setComponent(new ComponentName(getPackageName(), getPackageName() + ".SecondActivity"));
        try {
            startActivity(intent);
        } catch (Exception e) {
            XLog.i(TAG, "start activity error!");
        }
    }



如果是Apk里面使用的话,可以使用显示或者是隐式的。
如果是不同APK的话,建议使用隐式的方式。做到第耦合。



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值