android采用一种动态的方法管理资源,这就是导致应用程序组件可能在很少或者没有警告的情况下被终止。当确定哪个应用程序或者组件可以被终止时,android给正在运行的Service赋予了第二高的优先级,只有处于激活状态,前台运行的Activity才可以拥有更高的优先级。在service需要直接和用户交互的情况下(比如播放音乐),也许应该把service的优先级提升到与前台Activity一样高。可以通过Service的startForeground方法来设置该Service在前台运行。
由于前台Service预期会和用户直接交互,因此在调用startForeground方法的时候,必须指定一个持续工作的Notification.只要Service在前台运行,这个通知就会被显示。
startForeground(NOTIFICATION_ID,mynotification);
将一个Service设为前台运行可以有效地避免运行时在释放资源的时候终止这个Service.如果同时运行多个这种不可终止的Service,系统就会很困难。所有需谨慎啊。
当Service不再需要前台运行的优先级时,可以使用stopForeground方法,把它移到后台。并可以选择是否移除通知。Notification在Service停止或者终止的时候是会自动取消的
stopForeground(true);
时间: 2024-10-12 10:22:42