美文网首页
Android开发的小细节

Android开发的小细节

作者: KuTear | 来源:发表于2016-01-01 22:29 被阅读73次

    layout: post
    title: Android开发的小细节
    categories: blog
    date: 2015-06-10
    tags: [Android]
    category: Android
    description: Android开发过程的小笔记,细节,需要注意的地方


    Intent隐式启动
    Intent隐式启动Activity时必须在<intent-filter>指定

    <category android:name="android.intent.category.DEFAULT" />
    

    否则异常ActivityNotFoundException

    Service调用过程

    如果 Service 组件是执行长时间运行的操作,则一般采用启动模式。通过调用应用组件对象(如 Activity)的 startService 方法将启动一个 Service 对象实例。如果当前指定的Service 实例没有被创建,则会调用 Service 的 onCreate()方法来创建一个实例;否则直接调用 Service 的 onStartCommand()方法来运行 Service。。因此,Service 的 onStartcommand()方法
    可能会重复调用多次。所以在 onStartcommand()方法中要注意线程同步的问题。采用启动模式的 Service 一般持续执行一个单一的操作,而且并不会向调用者返回任何结果

    如果 Servise 组件提供一种封装的功能供其他组件使用,则一般采用绑定模式。通过调用应用组件对象的 bindService 方法启动 Service 对象实例,如果当前没有指定的 Service 实例被创建,则该方法会调用 Service 的 onCreate()方法来创建一个实例;实例启动后,将调用 onBind()方法。onBind 将返回给客户端一个 IBinder 接口实例,IBinder 允许客户端回调Service 的方法,比如得到 Service 运行的状态或其他操作。只要连接建立, Service 就会一直运行(不管客户是否保留 Service 的 IBinder 的引用)。通常 IBinder 是一个使用 AIDL 写成的复杂接口。

    QQ截图20150607192646.pngQQ截图20150607192646.png
    1. START_NOT_STICKY:如果Sevice在启动后,被kill掉,并且没有新启动的Intent传给它,那么将Service移出启动状态并且不重新生成,知道再次显示调用Context.startService。适用场景:网上下载数据。
    2. START_REDELIVER_INTENT:如果Service进程在启动后kill掉,那么它将会被重启,并且最后传给他的Intent通过onStartCommand(Intent ,int,int)会被重新传给他,这种模式保证了传给它Intent一定会被处理完毕,适用场景:关键业务处理。
    3. START_STICKY:如果Service在它启动后被kill掉,那么Android将让Service继续保持started状态,但是不保留启动它的Intent,Android将重新创建Service实例,并执行onStartCommand方法,如果此时没有新的Intent请求,此时Intent的参数是null,这一点要特别注意。适用场景:后台播放音乐。这种运行模式的特点是需要显示启动并停止Service。

    广播接收者的相关问题

    QQ截图20150608163423.pngQQ截图20150608163423.png

    相关文章

      网友评论

          本文标题:Android开发的小细节

          本文链接:https://www.haomeiwen.com/subject/enrwhttx.html