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会仍然运行。

  • 相关阅读:
    【LeetCode】226. Invert Binary Tree
    【LeetCode】235. Lowest Common Ancestor of a Binary Search Tree
    【LeetCode】191. Number of 1 Bits
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】100. Same Tree
    【LeetCode】237. Delete Node in a Linked List
    【LeetCode】136. Single Number
    【LeetCode】104. Maximum Depth of Binary Tree
    svn tree conflicts 解决方法
    sed详解
  • 原文地址:https://www.cnblogs.com/liuleliu/p/12263121.html
Copyright © 2011-2022 走看看