首页 > 其他 > 详细

Service之“停止Service”

时间:2015-04-21 22:44:48      阅读:344      评论:0      收藏:0      [点我收藏+]

    在Service类中,用于停止Service的方法有如下三个:

    1. public final void stopSelf();

    2. public final void stopSelf(int startId);

    3. public final boolean stopSelfResult(int startId);

    先说最好理解的,“public final void stopSelf()”。

    这个方法可以类比于Activity.finish()。作用就是简单停止当前Service。

    然后说一下后两个。

    后两个有着相同的参数 int startId。在讨论它之前,先得说一下onStartCommand(Intent intent, int flags, int startId)方法中的int startId参数,该参数代表onStartCommand被调用的次数(可知onStartCommand第一次被调用时传入的startId值为1,在当前Service实例没被销毁的情况下,onStartCommand方法每被调用一次,传入的startId便会+1)。注意一下关键语句“当前Service实例没被销毁的情况下”,在当前Service实例被停止之后(例如调用了stopSelf()),Service若被再次启动,那启动的Service将是一个新的实例,startId将会从1开始重新计数。现在我们已经将onStartCommand(Intent intent, int flags, int startId)方法中的int startId参数讨论完了,接下来我们来看stopSelf(int startId)和stopSelfResult(int startId)中的参数。这两个方法中的参数起的作用是相同的。如果我们调用这两个方法中任意一个时,如果传入的值和onStartCommand最后一次被调用时所被传入的startId值相同时,当前Service实例将被停止;如果不相同,则当前Service实例不会被停止。这两个方法的区别就在于其返回值,stopSelfResult(int startId)在传入的值和onStartCommand中的startId相等时返回true,否则返回false;stopSelf(int startId)的返回值为void,自然不必多说。

Service之“停止Service”

原文:http://blog.csdn.net/hao2244/article/details/45175529

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!