Sever学习记录

Service生命周期

  1. 通过startService
    Service会经历 onCreat->onStart->onDestroy,调用stopService方法 的时候直接OnDestroy。如果调用者没有stopService直接退出,那Service会在后台继续运行知道下次再启动时调用stopService退出服务
  2. 通过bindService
    只会运行onCreate()此时service与程序绑定在一起,如果程序退出了,service会调用onUnBind->onDestroyed,service与程序共存亡
  3. 另外如果这几种方法交织到了一起,可以遵循以下原则
    Service的onCreate只会调用一次。如果先start,那bind时就直接onBind。如果先bind,那么start时直接start,start的stopService无法使用,只能先unBindService,再使用stopService。

创建Service

Service类

public class MySever extends Service{
    private  int StatusCode;
    public MyServiceBinder myServiceBinder = new MyServiceBinder();
    //继承Binder类,编写getStatusCode方法,以获取状态码
    public  class MyServiceBinder extends Binder{
        public int getStatusCode(){
            return StatusCode;
        }
    }
    public IBinder onBind(Intent intent){
        return myServiceBinder;
    }
    public void onCreate (){
        super.onCreat();
        Toast.makeToast(this,"this is onCreate",Toast.LENGTH_LONG).show();
    }

    public void onDestroy(){
        super.onDestroy();
        Toast.makeText(this,"this is ondestroy",Toast.LENGTH_LONG).show();
    }
}

配置运行入口

<service android:name="MyService">
    <intent-filter>
        <action android:name="android.intent.action.RESPOND_VIA_MESSAGE"/>
    </intent-filter>
</service>

注意要给与相应的权限:

<uses-permission android:name="com.permission.MY_SERVICE_PERMISSION">
</uses-permission>

使用Service

  • startService法
Intent severintent = new Intent();
severintent.setAction("android.intent.action.RESPOND_VIA_MESSAGE");
startService(severintent);//开始服务
stopService(severintent);//停止服务

使用简单方便,程序退出前,若为调用stopService方法,则Service会继续运行,直到下次程序调用stopService方法

  • 绑定Service法
ServiceConnection  con = new ServiceConnection() {
            @Override
            int statusCode;
            MySever.MyServiceBinder myServiceBinder = new MyServiceBinder();
            public void onServiceConnected(ComponentName name, IBinder service) {
                myServiceBinder = (MyService.MyServiceBinder)service;//获取Binder对象,强转为MyServiceBinder对象
                statusCode  = myServiceBinder.getStatusCode();//应用与service间的通信,返回状态码
                Log.i("Service", "onServiceConnected:Connected "+statusCode);
            }
            @Override
            public void onServiceDisconnected(ComponentName name) {
                Log.i("Service", "onServiceConnected: Disconnected");
            }
        };
        bindService(new Intent("android.intent.action.RESPOND_VIA_MESSAGE"),con, Context.BIND_AUTO_CREATE);//绑定service

Service与应用之间通过IBinder对象进行通信

提高Service优先级

由于android系统有着一套内存管理服务 ,系统会自行终止一些它认为不重要的程序或服务,若遇到了这种情况,我们的Service多半会被杀掉。如果增加其优先级,就能多苟一会……默认启动时,Service优先级为background,当前运行的Activity一般为Foreground,在Service中使用setForeground(true)可使优先级提高到当前于activity相当的程度。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值