android service 学习

android service是android的4大组件之一,他运行的主线程中,所以在service中进行耗费时间的操作,还是必须进行启动线程,首先有两种方式进行启动service并且传值:

很感谢引路蜂,写的博客,

http://blog.csdn.net/mapdigit/article/details/8709039
第一种方式,使用context进行启动service,


 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startCustomService();


        Intent intent = new Intent(this,LocalService.class);
        startService(intent);
』

LocalService:

public class LocalService extends Service {

    public class LocalBinder extends Binder {
        String stringToSend = "I'm the test String";

        LocalService getService() {
            Log.i("TAG", "getService ---> " + LocalService.this);
            return LocalService.this;
        }
    }

    @Override
    public IBinder onBind(Intent intent) {

        Log.e("service", "this is onBind");
        return null;
    }

    @Override
    public boolean onUnbind(Intent intent) {
        Log.e("service", "this is onUnBind");
        return super.onUnbind(intent);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e("service", "this is onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onCreate() {
        Log.e("service", "this is onCreate");
        super.onCreate();
    }

    public LocalService() {
        super();
        Log.e("service", "this is LocalService");
    }

    @Override
    public void onDestroy() {
        Log.e("service", "this is onDestroy");
        super.onDestroy();
    }


}
在这种启动的过程中,我们可以通过intent进行传值,可以将activity中的数据传递到service中,并且在service中进行获取到
2,第二种是进行service的绑定,将一个service绑定到activity上,并且也可以通过intent进行值得传递

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startCustomService();


        Intent intent = new Intent(this,LocalService.class);
//        startService(intent);


        bindService(intent,serviceConnection, BIND_AUTO_CREATE);


        serviceConnection = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {


                localService = ((LocalService.LocalBinder)service).getService();
                String recStr = ((LocalService.LocalBinder) service).stringToSend;
                Log.e("service", recStr);
            }


            @Override
            public void onServiceDisconnected(ComponentName name) {


            }
        };
两种启动方式,都可以通过广播进行将值返回到activity中,在两种调用的时候service的启动方式

 整体生命周期 指Service在onCreate()和onDestroy()之间。和Activity类似,Service可以在onCreate () 进行一些初始化工作,而在onDestroy () 中释放资源。比如,一个音乐播放器可以在onCreate() 创建用来播放音乐的线程,而在onDestroy() 停止这个线程。

·活动生命周期 Service 在 onStartCommand() 或 onBind() 后开始活动,每个方法分别处理来自 startService和 bindService() 发过来请求 Intent。如果是“Started”的Service,那么它活动的生命周期和Service的整个生命周期是一致的。如果是“绑定”的Service,那么它的活动生命周期终止与unbind()。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值