zoukankan      html  css  js  c++  java
  • android 服务

    1.创建服务

    Exported:是否允许除了当前程序之外的其他程序访问这个服务

    Enable:是否启用这个服务

    点击完成后自动生成

    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    
    public class MyService extends Service {
        public MyService() {
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }

    onBind 是Service唯一的抽象方法。

    创建完成后会在AndroidManifest.xml中自动进行注册

     <service
                android:name=".MyService"
                android:enabled="true"
                android:exported="true"></service>

    2.开关服务

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void startClick(View view){
            Intent startIntent=new Intent(this,MyService.class);
            //启动服务
            startService(startIntent);
        }
        public void stopClick(View view){
            Intent startIntent=new Intent(this,MyService.class);
            //关闭服务
            stopService(startIntent);
        }
    }

    界面

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="启动服务"
                android:onClick="startClick" />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="停止服务"
                android:onClick="stopClick" />
        </LinearLayout>

    点击启动服务按钮,在手机系统里可以发现多出一个服务名,

     

    即使关闭程序,服务也不会停止。直到点击停止服务按钮,或者卸载了该程序。

    3.

    public class MyService extends Service {
        public MyService() {
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
        //服务创建时调用
        @Override
        public void onCreate() {
            super.onCreate();
            Log.d("MyService","执行了onCreate方法");
        }
        //服务每次启动时调用
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.d("MyService","执行了onStartCommand方法");
            return super.onStartCommand(intent, flags, startId);
        }
        //服务销毁时调用
        @Override
        public void onDestroy() {
            Log.d("MyService","执行了onDestroy方法");
            super.onDestroy();
        }
    }

    第一次点击启动服务

    再次点击启动服务

    点击停止服务

     

    4.关联活动与服务

    添加两个按钮

      <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="绑定服务"
            android:onClick="bind" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消绑定"
            android:onClick="unBind" />

    MyService

    public class MyService extends Service {
    
        private Download dlBinder =new Download();
    
        class Download extends Binder{
    
            public void startDownload(){
                Log.d("MyService","开始下载");
            }
            public int getProgress(){
                Log.d("MyService","得到进度");
                return 0;
            }
        }
        @Override
        public IBinder onBind(Intent intent) {
            return dlBinder;
    
        }

    MainActivity

    public class MainActivity extends AppCompatActivity {
        private MyService.Download dlBinder;
        //匿名类
        private ServiceConnection connection =new ServiceConnection() {
            //活动与服务成功绑定时调用
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                //
                dlBinder=(MyService.Download)service;
                dlBinder.startDownload();
                dlBinder.getProgress();
            }
            //活动与服务解除绑定时调用
            @Override
            public void onServiceDisconnected(ComponentName name) {
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
        }
        
        public void bind(View view){
            Intent bindIntent=new Intent(this,MyService.class);
            //绑定服务
            bindService(bindIntent,connection,BIND_AUTO_CREATE);
        }
    
        public void unBind(View view){
            Intent unBindIntent=new Intent(this,MyService.class);
            //解绑服务
            unbindService(connection);
        }
    }

     点击 绑定服务

    点击取消绑定

  • 相关阅读:
    2008年Web2.0峰会:发展是绝对的硬道理
    盖茨"接班人":微软产品为何总是挨批
    如何使用命令方式检测mx记录是否生效
    IBM公布未来5年将改变人类生活的五大科技
    谷歌李开复:我的传奇人生源于十句箴言
    VCL已死,RAD已死(3)
    VCL已死,RAD已死(2)
    主要程序设计语言范型综论与概要
    谷歌正式放弃与雅虎的广告合作计划
    模仿google分页代码
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/8372901.html
Copyright © 2011-2022 走看看