Android技术汇总Android精选

android Service复习总结

2019-01-05  本文已影响54人  土肥圆的诺诺
1. Service 的 start 和 bind 状态有什么区别?
2.同一个 Service,先 startService,然后再 bindService,如何把它停止掉?

其实这种情况下,单使用unbindService或者stopService是不管用的。
因为在bindService不调用unbindService或者调用者销毁,Service不会销毁,同样只调用stopService,这时候还存在绑定关系,那么Service也不会销毁。最好的办法是unbindService 然后stopService。

3.Service 的 onStartCommand 方法的返回值?不同返回值有什么区别?

conStartCommand方法主要用途在于决定当服务被杀死之后,要如何处理的问题。

        public int onStartCommand(Intent intent, int flags, int startId) {
            return super.onStartCommand(intent, flags, startId);
    }

在2.0 API level之后,实现onStart等同于重写onStartCommand并返回START_STICKY
onStartCommand使用时,返回的是一个(int)整形。 这里有四个返回值:START_STICKY、START_NO_STUCKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY

4.Service 的生命周期方法 onCreate、onStart、onBind 等运行在哪个线程?

都是在主线程。

public void onCreate() {
        super.onCreate();
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Log.e(TAG, "onCreate: UIMain ");
        }
    }
 @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Log.e(TAG, "onStart: UIMain");
        }
    }
 @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Log.e(TAG, "onBind: UIMain");
        }
        return null;
    }

image.png
上一篇下一篇

猜你喜欢

热点阅读