草庐IT

onStartCommand

全部标签

android - 服务 onStartCommand 方法

我想知道如果两个不同的线程同时调用服务A上的startService,服务是否执行onStartCommand()两者分开还是一个取消另一个?我想了解Android中的服务。 最佳答案 Service只会被创建一次,但是onStartCommand()会被调用多次,就像有人调用startService()一样Intent用于启动传递给它的服务。这样您就可以让服务响应每个Intent中的不同操作。请注意,单次调用stopService()即可终止服务,无论有人调用多少次startService()。请参阅Servicelifecycl

android - 模拟安卓查杀重启服务

我想模拟android终止并重新启动我的服务,以测试当我收到nullIntent时会发生什么,以及我需要如何处理清理/恢复。这可能吗?publicMyServiceextendsService{@OverridepublicvoidonCreate(){//Dostuff}@OverridepublicvoidonStartCommand(Intentintent,intflags,intstartId){if(intent==null){//Dostuffforrestart}else{//DostufffornormalstartreturnSTART_STICKY;}}@Over

android - 在某些设备中甚至使用 START_STICKY 后杀死应用程序后服务不会再次启动

在我的服务中,我已返回START_STICKY以使我的Service在我终止应用程序后再次重启。我已经测试过,它可以在设备Samsung、Sony、LG中使用,但在Xiaomi中无法使用(服务不支持重新开始)@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){returnSTART_STICKY;}我该如何处理这种情况。任何帮助或建议将不胜感激?来自Android文档/***Constanttoreturnfrom{@link#onStartCommand}:ifthisservice's*process

android - 在 Android 中执行服务的最佳方法

我有一个生命周期可变的服务。它可能会执行5分钟到2小时(例如)。所以我正在寻找最好的方法来做到这一点,我的服务必须实现以下功能:每5秒向(我的服务器)发送经纬度和一些额外信息(string、boolean和int的)我已经尝试过一个“正常”的服务,并试图做这样的事情来实现这一点:publicclassMyFiveSecondsServiceextendsService{privateHandlerhandler;Runnabler=newRunnable(){@Overridepublicvoidrun(){//heresendmynewdata}};publicvoidonCreat

android - 停止 IntentService

有谁知道是否有一种方法可以在IntentService不完成其工作线程并自行停止的情况下停止它?简单的问题,但我在文档中找不到答案。有没有简单的方法来阻止它?谢谢 最佳答案 在向服务发送消息之前调用onStartCommand。转发消息进行排队。所以你可以重写onStartCommand,像这样:@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){if(intent.getAction().equals("Stop"))stopSelf();onSta

android - IntentService - 查找队列中等待的 Intents 数量

在我的应用程序中,我使用IntentService来完成一些工作。我想知道有多少意向正在等待处理,因为IntentService将它们保存在“工作队列”中,并将下一个发送到onStartCommand()作为onStartCommand上一个已经完成。我怎样才能知道有多少Intent在这个“工作队列”中等待? 最佳答案 实际上这很简单:您需要做的就是覆盖onStartCommand(...)并递增一个变量,然后在onHandleIntent(...)中递减它.publicclassMyServiceextendsIntentServ

android - Intent 始终为 null onStartCommand

我有以下代码@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){if(intent!=null){Log.i("INTENT",intent.getAction().toString());}returnSTART_STICKY;}但它总是在线返回NullPointerException:Log.i("INTENT",intent.getAction().toString());为什么?我在上面检查“intent”变量是否不为空。如果是这种情况,请执行以下代码。但我仍然遇到nullpointerexcep

Android 服务 onStartCommand 从未调用过

我注意到Service.START_STICKY不工作,当我仔细观察时,我看到onCreate()正在运行但没有调用onStartCommand。有什么想法吗?@OverridepublicvoidonCreate(){mGlobalData=GlobalData.getInstance();mNotificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);if(mTimer==null)mTimer=newTimer();Log.e(TAG,"onCreate()");}@Override

android - 空 Intent 重新传递给服务 onStartCommand()

在Android文档中,服务的“onStartCommand()”有一个作为param给出的Intent,根据文档:“提供给startService(Intent)的Intent,如给定的。如果服务在其进程消失后重新启动,则这可能为空,并且它有之前返回了除START_STICKY_COMPATIBILITY之外的任何内容。”但是,返回值START_REDELIVER_INTENT应该返回重新启动服务时的原始Intent。谁能解释为什么intent可以为空,即使flag设置为START_REDELIVER_INTENT? 最佳答案 你

android - 服务中的 postDelayed()

我正在尝试在一段时间后自行重启服务。我的代码看起来像这样(在onStartCommand(...)内)Looper.prepare();Handlerhandler=newHandler();handler.postDelayed(newRunnable(){@Overridepublicvoidrun(){Intentintent=newIntent(BackgroundService.this,BackgroundService.class);startService(intent);}},3*60000);此代码执行时服务在前台运行,但它似乎没有调用onStartCommand(