• Android之Service


    service :一直在后台运行!

    创建:

    1.创建一个继承service的子类!

    2.在Androidmainfest.xml中进行配置!

    启动方式(两种):

    1.Context.startService(new Intent());

        1) 通过该方法启动的service,service与访问者没有关联!即使访问者退出,service仍然可以运行!所以service不能与访问者进行数据交互

    停止方法:

        Context.stopService(new Intent());

    2.Context.bindService(new Intet(),Serviceconnection con,int flags);

        con :该对象中有两个方法需要重写

            onServiceConnected(ComponentName name,IBinder binder){

              // 该方法当访问者与Service绑定成功时回调!onBind()方法中返回的IBinder对象就是binder,这样就实现了service与访问者之间数据的交互!

            } 

            onServiceDisconnected(ComponentName name){

              // 该方法当程序异常,或者其他原因导致的访问者与service断开连接回调!   如果是调用unbindService()方法来停止服务 不回调!

            }

        2) 通过该方法启动的service,service与访问者进行绑定!如果绑定的访问者退出,停止service! 因此可以与访问者进行数据交互!

    停止方法:

        Context.unbindService(new Intent());

    生命周期:

    service的生命周期与之启动方式不同而略有不同!

    1.使用startService():onCreate()  -->  onStartconmmand() --> onDestroy()

    2.使用bindService() : onCreate()  -->  onBind()  --> onUnbind()  --> onDestroy()

    onCreate() :第一次创建service时~!执行”一“次!

    onStartconmmand(): 每次执行startService()时,回调!

    onDestroy(): 执行stopService()方法停止服务时,回调!

    onBind() :service子类必须实现的方法!该方法返回一个Ibinder对象!通过该方法程序可以与service进行通信!

    onUnbind() :当与该service绑定的客户端都断开连接时回调!

    IntentService :

    IntentService不是普通的Service,他是Service的子类,对Service进行了增强!

    Service不足:

    1.Service不会单独启用一个线程,他和他的应用在同一个线程中!

    2.Service 因为他不是在一条新线程中,所以不能执行耗时任务!

    IntentService 与之相反!

    继承IntentService的子类重写一个方法即可:

    onHandlerIntent(Intent intent){

    }

  • 相关阅读:
    eclipse中的任务标记(TODO、FIXME、XXX)
    编码规范参考
    MVC,MVP 和 MVVM
    Android的两种事件处理机制
    在Eclipse中自定义类似syso的快捷代码模板
    Android
    eclipse使用tips-Toggle Mark Occurrences 颜色更改
    从 Eclipse 迁移至 Android Studio
    Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
    [POJ 2976]Dropping tests(0-1分数规划)
  • 原文地址:https://www.cnblogs.com/shiguotao-com/p/5197008.html
Copyright © 2020-2023  润新知