android 线程中启动线程的方法,Android:2.3.6主要线程阻塞当我请求在Activity.onCreate方法中启动两个服务时...

我正在开发一个应用程序,我需要在应用程序启动时启动后台服务 .

最初我在Application.onCreate()方法上添加了第一个服务的启动过程 .

之后,我意识到如果用户因任何原因停止了后台线程,我需要重新启动该服务 . 因此,我将服务启动代码从Application.onCreate()移动到主要的Activivity.onResume() .

根据文档,在已经运行的服务上调用startService()没有问题 .

在那之前,一切都很好 . 我的第一个后台服务实施得很好 . 当它启动时,它会创建一个新线程来运行后台处理而不会出现重大问题 .

实施第一项服务后,我转到第二项服务 . 这里没问题 . 但在实现它并在Activity.onResume()方法上添加了服务启动调用之后 .

private void startServices() {

startTrackingService();

startBacklogService();

}

private void startTrackingService() {

if (Z10.DEBUG) {

Log.i(LOG_TAG, "REQUESTING TRACKING SERVICE START");

}

Intent serviceLauncher = new Intent(Main.this, TrackingService.class);

startService(serviceLauncher);

if (Z10.DEBUG) {

Log.i(LOG_TAG, "TRACKING SERVICE START REQUESTED");

}

}

private void startBacklogService() {

if (Z10.DEBUG) {

Log.i(LOG_TAG, "REQUESTING BACKLOG SERVICE START");

}

Intent serviceLauncher = new Intent(Main.this, BacklogService.class);

startService(serviceLauncher);

if (Z10.DEBUG) {

Log.i(LOG_TAG, "BACKLOG SERVICE START REQUESTED");

}

}

此代码阻止主要方法,必须杀死应用程序 .

试图调试应用程序(没有android源代码!!!这很困难),我意识到startService并没有真正启动服务,它只是在Looper队列上添加了要处理的操作 .

如果,我按顺序执行两个startService操作,主线程阻塞,但如果在主线程上做其他事情(UI相关),然后启动第二个服务,它就可以正常工作 .

问题是我真的需要在应用程序启动时启动这两个服务,或者在主活动恢复上重新启动它们 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值