zoukankan      html  css  js  c++  java
  • Android中的Service基础

    Service主要用于后台程序和跨进程访问,可以在不显示界面的前提下完成任务,不影响用户的其他操作。

    这里我展示一些基本的用法

    新建一个Service类

    package com.example.service;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.Binder;
    import android.os.IBinder;
    import android.widget.Toast;
    
    public class MyService extends Service {
        private IBinder myBinder=new Binder(){
            public String getInterfaceDescriptor(){
                return "MyServerceUtil class.";
            }
    
        };
        public IBinder onBind(Intent intent)//绑定时触发
        {
            Toast.makeText(getApplicationContext(),"服务绑定",Toast.LENGTH_SHORT).show();
            return myBinder;
        }
        public void onRebind(Intent intent)//重新绑定时触发
        {
            super.onRebind(intent);
        }
        public boolean onUnbind(Intent intent)//解除绑定时触发
        {Toast.makeText(getApplicationContext(),"服务解绑",Toast.LENGTH_SHORT).show();
            return super.onUnbind(intent);
        }
    
    
    
        public void onCreate(){
            super.onCreate();
    
        }//创建时触发
        public void onDestroy(){
            super.onDestroy();
            Toast.makeText(getApplicationContext(),"服务销毁",Toast.LENGTH_SHORT).show();
        }
    
        public int onStartCommand(Intent intent,int flags,int startId)//启动时触发
        {
            Toast.makeText(getApplicationContext(),"服务启动",Toast.LENGTH_SHORT).show();
    
            return  Service.START_NOT_STICKY;
        }
    }
    

      在Mainactivity中调用

    package com.example.service;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.ServiceConnection;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    private Button start=null;
    private Button bind=null;
    private Button stop=null;
    private Button unbind=null;
    
    private ServiceConnection serviceConnection =new ServiceConnection() {
            @Override
            //连接
            public void onServiceConnected(ComponentName name, IBinder service) {
    
            }
    
            @Override
            //断开连接
            public void onServiceDisconnected(ComponentName name) {
    
            }
        };
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            start=(Button)super.findViewById(R.id.start);
            stop=(Button)super.findViewById(R.id.stop);
            bind=(Button)super.findViewById(R.id.bind);
            unbind=(Button)super.findViewById(R.id.unbind);
            start.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MainActivity.this.startService(new Intent(MainActivity.this,MyService.class));
                }
            });
            stop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MainActivity.this.stopService(new Intent(MainActivity.this,MyService.class));
                }
            });
        bind.setOnClickListener(new View.OnClickListener() {
        @Override
         public void onClick(View v) {
            //绑定
        MainActivity.this.bindService(new Intent(MainActivity.this,MyService.class),
                MainActivity.this.serviceConnection, Context.BIND_AUTO_CREATE);
        }
    });
        unbind.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //解除绑定
                MainActivity.this.unbindService(MainActivity.this.serviceConnection);
            }
        });
        }
    }
    

      

    服务的onCreate()函数在服务第一次启动时会执行一次,之后若不销毁的话再次启动就不会执行,只执行onStartCommand

    绑定的用途是把Activity与Service绑定在一起,绑定后当Activity停止时,Service也会停止;未绑定时Activity退出后,Service会仍然运行。

  • 相关阅读:
    AIMS 2013中的性能报告工具不能运行的解决办法
    读懂AIMS 2013中的性能分析报告
    在线研讨会网络视频讲座 方案设计利器Autodesk Infrastructure Modeler 2013
    Using New Profiling API to Analyze Performance of AIMS 2013
    Map 3D 2013 新功能和新API WebCast视频下载
    为Autodesk Infrastructure Map Server(AIMS) Mobile Viewer创建自定义控件
    ADN新开了云计算Cloud和移动计算Mobile相关技术的博客
    JavaScript修改css样式style
    文本编辑神器awk
    jquery 开发总结1
  • 原文地址:https://www.cnblogs.com/liuleliu/p/12263121.html
Copyright © 2011-2022 走看看