zoukankan      html  css  js  c++  java
  • Android-Service生命周期

    MyService重写的方法:

    public class MyService extends Service {
    
        private final static String TAG = MyService.class.getSimpleName();
    
        @Override
        public void onCreate() {
            super.onCreate();
            Log.d(TAG, "onCreate()...");
        }
    
        @Override
        public void onStart(Intent intent, int startId) {
            super.onStart(intent, startId);
            Log.d(TAG, "onStart()...");
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.d(TAG, "onStartCommand()...");
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            Log.d(TAG, "onBind()...");
            return null;
        }
    
        @Override
        public boolean onUnbind(Intent intent) {
            Log.d(TAG, "onUnbind()...");
            return super.onUnbind(intent);
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
            Log.d(TAG, "onDestroy()...");
        }
    }

     MainActivity调用Service方法

      public void startService(View view) {
            startService(new Intent(this, MyService.class));
        }
    
        public void stopService(View view) {
            stopService(new Intent(this, MyService.class));
        }
    
        public void bindService(View view) {
            bindService(new Intent(MainActivity.this, MyService.class), connection, Context.BIND_AUTO_CREATE);
        }
    
        public void unBindService(View view) {
            unbindService(connection);
        }
    
        private ServiceConnection connection = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
            }
            @Override
            public void onServiceDisconnected(ComponentName name) {
            }
        };
    
        public void startMainActivity2(View view) {
            startActivity(new Intent(this, MainActivity2.class));
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            unbindService(connection);
        }

    startService  stopService

    第一次startService:

    12-06 19:38:49.693 1958-1958/liudeli.service1 D/MyService: onCreate()...
    12-06 19:38:49.693 1958-1958/liudeli.service1 D/MyService: onStartCommand()...
    12-06 19:38:49.693 1958-1958/liudeli.service1 D/MyService: onStart()...

    第二次startService:

    12-06 19:38:55.433 1958-1958/liudeli.service1 D/MyService: onStartCommand()...
    12-06 19:38:55.433 1958-1958/liudeli.service1 D/MyService: onStart()...

    去点击stopService:

    12-06 19:43:24.658 1958-1958/liudeli.service1 D/MyService: onDestroy()...

    startService后:

    bindService  unBindService

    bindService,多次点击bindService,只会出现一次:

    12-06 19:49:27.800 1958-1958/liudeli.service1 D/MyService: onCreate()...
    12-06 19:49:27.801 1958-1958/liudeli.service1 D/MyService: onBind()...

    unBindService,点击unBindService,会执行:

    12-06 20:47:58.903 4112-4112/liudeli.service1 D/MyService: onUnbind()...
    12-06 20:47:58.903 4112-4112/liudeli.service1 D/MyService: onDestroy()...

    startService  stopService    bindService  unBindService

    点击startService:  

    12-06 20:49:03.637 4235-4235/liudeli.service1 D/MyService: onCreate()...
    12-06 20:49:03.638 4235-4235/liudeli.service1 D/MyService: onStartCommand()...
    12-06 20:49:03.638 4235-4235/liudeli.service1 D/MyService: onStart()...

    点击bindService:

    12-06 20:49:08.867 4235-4235/liudeli.service1 D/MyService: onBind()...

    点击unBindService:

    12-06 20:49:32.640 4235-4235/liudeli.service1 D/MyService: onUnbind()...

    点击stopService:

    12-06 20:49:35.351 4235-4235/liudeli.service1 D/MyService: onDestroy()...

    注意:Service是单例方式,onCreate()  onDestroy() 只会创建一次

         Service中是没有onStop()方法

         Service中的只能由别人调用启动,Service自己不能启动

         Service中停止可以由别人调用stopService,Service自己也可以调用stopSelf();

         bindService不会在手机系统中显示运行服务

       startService会在手机系统中显示运行服务

         bindService是与Activity同生共死的,在界面结束后需要调用:Activity-->onDestroy(unBindService),AActivity绑定服务后只能AActivity解绑服务

         startService是与Activity无关的,是在后台服务长时间运行的,AActivity启动的服务,可以用BActivity来停止服务

       服务的特点是:在后台长时间的运行,不能直接的去执行耗时操作,需要通过异步方式去执行耗时操作,可以把Service想象成没有界面的Activity,区别是服务在后台长时间运行

  • 相关阅读:
    Adding Swap Files
    Creating a Swap Partition
    linux删除或隐藏命令历史记录history
    Unix系统解压tar包时出现@LongLink错误
    【白话经典算法系列之十七】 数组中只出现一次的数 其他三次
    MapReduce原理及其主要实现平台分析
    二叉搜索树转换为有序双向链表
    实现O(1)获取最大最小值的栈----java
    对线性回归,logistic回归和一般回归的认识
    SMO优化算法(Sequential minimal optimization)
  • 原文地址:https://www.cnblogs.com/android-deli/p/10081348.html
Copyright © 2011-2022 走看看