安卓系统服务是一种在后台运行的组件,可以在不与用户直接交互的情况下执行某些操作。要打开安卓系统服务,可以通过创建服务来实现。服务在其托管进程的主线程中运行,如果服务将执行任何 CPU 密集型工作或阻止性操作(例如 MP3 播放或联网),则应通过在服务内创建新线程来完成这项工作。通过使用单独的线程,可以避免发生“应用无响应” 错误的风险,而应用的主线程仍可继续专注于运行用户与 Activity 之间的交互。创建服务的步骤如下:
1、使用清单文件声明服务:在 AndroidM 文件中声明服务,使用 <service> 元素指定服务的名称、描述以及使用服务的类。例如:
<
manifest
.
.
.
>
<
application
.
.
.
>
<
service android
:
name
=
".ExampleService"
/
>
.
.
.
<
/
application
.
.
.
>
.
.
.
<
/
manifest
.
.
.
>
2、创建服务类:创建服务类,继承 Service 类,并实现必要的方法,例如 onCreate、onStartCommand 和 onDestroy。例如:
public
class
ExampleService
extends Service
{
@Override
public void onCreate
;">)
{
//
服务创建时调用
}
@Override
public
int
onStartCommand
;">,
int
flags
,
int
startId
)
{
//
服务启动时调用
return
START_STICKY
;
}
@Override
public void onDestroy
;">)
{
//
服务销毁时调用
}
@Override
public IBinder onBind
;">)
{
//
绑定服务时调用
return
null
;
}
}
3、启动服务:启动服务可以通过调用 startService 方法来实现。例如:
Intent intent
=
new Intent
;">,
ExampleService
.
class
)
;
startService
;">)
;
如果服务已经运行,则调用 startService 不会创建新的服务实例,而是调用 onStartCommand 方法。
4、停止服务:停止服务可以通过调用 stopService 或 stopSelf 方法来实现。例如:
Intent intent
=
new Intent
;">,
ExampleService
.
class
)
;
stopService
;">)
;
调用 stopSelf 方法可以在服务内部停止服务,例如:
public
class
ExampleService
extends Service
{
@Override
public void onDestroy
;">)
{
super
.
onDestroy
;">)
;
stopSelf
;">)
;
}
}
除了普通的服务,还有前台服务。前台服务是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。前台服务必须为状态栏提供通知,将其放在运行中的标题下方。只有当应用执行的任务需供用户查看(即使该任务未直接与应用交互)时,才应使用前台服务。因此,前台服务必须显示优先级为 PRIORITY_LOW 或更高的状态栏通知。如果某操作不是特别重要,因而希望使用最低优先级通知,则可能不适合使用服务;相反,可以考虑使用计划作业。
如有侵权请及时联系我们处理,转载请注明出处来自
相关推荐
推荐文章