android(base)Activity启动方法

本文详细介绍了Android中Activity的显式启动(包括三种方式:class跳转、包名+类名跳转、ComponentName跳转)和隐式启动(通过设置启动过滤器匹配action和data)。同时,还探讨了显式与隐式启动的主要区别,强调显式启动直接指定目标组件,而隐式启动依赖于IntentFilter匹配。

显式启动明确指定要启动的activity的class或者包名.activity类名字
方式一:class跳转
Intent intent =new Intent(Activity1.this,Activity2.class);
startActivity(intent);

public class myActivity extends Activity {
    Button btnStart;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnStart = (Button) findViewById(R.id.btn_start_second);
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =new Intent();
                intent.setClass(myActivity.this,secondActivity.class);
                startActivity(intent);}
        });
    }
    }

方式二:包名,类名字跳转
Intent intent =new Intent();
Intent.setClassName(context,”c1”);
startActivity(intent);

public class myActivity extends Activity {
    Button btnStart;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnStart = (Button) findViewById(R.id.btn_start_second);
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //第一种
//                Intent intent =new Intent();
//                intent.setClass(myActivity.this,secondActivity.class);
//                startActivity(intent);
                //第二种
                Intent intent1 =new Intent();
                intent1.setClassName(myActivity.this,"com.example.asong.test.secondActivity");
                startActivity(intent1);


            }
        });
    }
    }

方式三:ComponentName跳转
Intent intent =new Intent();
intent.setComponent(new Component(context,activity2.class));
startActivity(intent);

  Intent intent =new Intent();
                ComponentName componentName=new ComponentName(myActivity.this,secondActivity.class);
                intent.setComponent(componentName);
                startActivity(intent);

隐式启动
设置启动过滤器,通过指定Manifests文件中的action或者action和data属性,系统会查找符合条件的activity,并启动它。

Manifests文件

 <activity android:name=".secondActivity">
            <intent-filter>
                <action android:name="abcd.secondActivity"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            </activity>

方式一:在构造时就传入actionName
Intent intent =new Intent(“actionName”);
startActivity(intent);

 Intent intent =new Intent("abcd.secondActivity");
                startActivity(intent);

方式二:构造完成后设置actionName
Intent intent =new Intent();
intent.setAction(“actionName”);
startActivity(intent);

  Intent intent =new Intent();
                intent.setAction("abcd.secondActivity");
                startActivity(intent);

相关面试题

显式启动与隐式启动的区别是什么?
简答:
显式指的是指定了目标组件的intent,隐式指的是通过intentfilter来匹配启动的intent,都是程序发出的请求意图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值