Service作为内部类使用方法

时间:2022-04-14 23:21:00

最近公司有需求 service要以内部类方式使用特此记录

代码:

public class OutService extends Service {
    public OutService() {
        Log.d("OutService","OutService()");
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        Log.d("OutService","onBind(Intent intent)");
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d("OutService","onCreate()");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("OutService","onStartCommand(Intent intent, int flags, int startId)");

        startService(new Intent(this,InnerService.class));

        return super.onStartCommand(intent, flags, startId);
    }

    /**
     * 内部 Service
     */
    public static class InnerService extends Service {
        public InnerService() {
            Log.d("InnerService","InnerService()");
        }

        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            Log.d("InnerService","onBind(Intent intent)");
            throw new UnsupportedOperationException("Not yet implemented");
        }

        @Override
        public void onCreate() {
            super.onCreate();
            Log.d("InnerService","onCreate()");
        }

        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.d("InnerService","onStartCommand(Intent intent, int flags, int startId)");
            return super.onStartCommand(intent, flags, startId);
        }
    }
}

清单文件:

<service

    android:name=".service.OutService"

    android:enabled="true"

    android:exported="true"/>

<service android:name=".service.OutService$InnerService" />