-
这是否意味着**实现?
一般有两种类型。
startservice()-stopself()/stopservice();
bindservice()-onunbind();
建议查看开发文档中的相关说明,并找一个示例进行练习,非常简单。
-
服务的生命周期比活动的生命周期方法少一个。
有些,只有 oncreate、onstart、ondestroy
我们有两种方式来启动服务,它们有一个服务生命周期。
影响是不一样的。
1;通过 startservice:
服务会经过 oncreate->onstart,当 stopservice 直接为 ondestroy 时,如果调用方(testserviceholder)直接退出而不调用 stopservice,则服务将始终在后台运行。 下次 testserviceholder 再次起床时,您可以停止服务。
2:通过BindService:
Service 只会在 oncreate 上运行,并且 testserviceholder 和 testservice 会绑定在一起。
TestServiceHolder 退出,Srevice 调用 onunbind->ondestroyed,所谓的绑定将共存并消亡。
然后一个学生问,如果这些方法交织在一起会发生什么?
一个原则是,无论调用多少次,服务的 oncreate 方法都只会调用一次。
startservice 也是 bindservice,并且只创建一次服务。 如果先绑定,则服务在启动时直接运行 onstart 方法,如果先启动,则在绑定时直接运行 onbind 方法。 如果你先绑定它,是的。
Stop 不能丢弃,是啊,只是 stopservice 不好,只能先解绑服务,然后再解绑服务,所以先启动还是先绑定是有区别的。
-
如果已经启动,则 startseervice 无效;
-
service 是 android 中的一种机制,当它运行时,如果是本地服务,那么对应的服务就运行在主进程的主线程上。 例如,当系统调用 oncreate 和 onstart 函数时,它们运行在主进程的主线程上。
如果是远程服务,则相应的服务在单独进程的主线程上运行。 所以不要把服务当成一个线程,它与线程没有任何关系!
那么,我们为什么要使用服务呢? 其实这和Android的系统机制有关,我们先来拿Thread来说吧。 线程独立于 Activity 运行,这意味着当活动完成时,如果不停止线程或线程中的 run 方法未完成,则线程将继续执行。
所以这里有一个问题:当一个活动完成时,你不再持有对该线程的引用。 另一方面,您无法在不同的活动中控制同一线程。
例如,如果您的线程需要每隔一段时间连接到服务器以进行某种同步,则即使活动未启动,线程也需要运行。 此时,当您启动活动时,无法控制该活动中先前创建的线程。
所以你需要创建一个服务并启动一个服务,并在服务中创建、运行和控制线程,这样就解决了问题(因为任何活动都可以控制同一个服务,而系统只会创建对应服务的一个实例)。
因此,您可以将服务视为消息传递服务,并且可以在任何具有上下文的地方调用它来控制它,或者您可以在服务中注册一个广播接收器并通过将广播发送到其他地方来控制它,这当然是线程无法做到的。
有两种方法! 1. 调用 StartActivity 或 Finish 后调用 OverridependingTransition(Anim Enter, Anim Exit); 2.在主题中复制系统的默认动画! >>>More
如何在 Win7 中关闭自动更新。
当系统关机时,会自动更新以延长关机时间,导致无法快速关机和拔掉插头的紧急情况。 下面给出一个解决方案,以 win7 为例步骤方法。 >>>More
这种汽车设有启动按钮,即无需插入车钥匙,直接按下钥匙即可在车钥匙电子感应的有效范围内启动车辆,省去了拧钥匙的动作。 如果你踩下刹车踏板而不踩它,你会打开电源,如果你踩刹车,你会直接启动车辆。 再次按下启动状态可关闭点火开关(有些还配备了熄火按钮)。 >>>More