[RK3288][Android6.0] 调试笔记 --- ComponentName的使用

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

之前没太注意它的具体内容,最近遇到service后台运行的问题正好关注一下。

Android的应用程序都是基于组件来标识的。它由两部分组成:包名和类名
通过这两个参数,系统可以打开对应应用程序下的Activity或Service.


包名和类型的定义都在AndroidManifest.xml中,例如
packages/providers/MediaProvider/AndroidManifest.xml:
包名:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        //这就是包名
        package="com.android.providers.media"

类名:

        //类名是"MediaScannerService" ,是一个Service
        <service android:name="MediaScannerService" android:exported="true">
            <intent-filter>
                <action android:name="android.media.IMediaScannerService" />
            </intent-filter>
        </service>

调用:
系统提供了ComponentName类来处理调用启动对应的类。
这里写图片描述
例子:
frameworks/base/media/java/android/media/MediaScannerConnection.java

    public void connect() {
        synchronized (this) {
            if (!mConnected) {
                Intent intent = new Intent(IMediaScannerService.class.getName());
                intent.setComponent(
                        new ComponentName("com.android.providers.media",
                                "com.android.providers.media.MediaScannerService"));
                mContext.bindService(intent, this, Context.BIND_AUTO_CREATE);
                mConnected = true;
            }
        }
    }

注意:
1. 类名可以包含包名,也可以省略包名,以.开头
2. 启动的Activity或者Service如果不是入口Activity或者Service,那么一定要加上Android:exported=”true”


参考:
ComponentName
关于Android的组件名
关于ComponentName的使用

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值