草庐IT

android - 前台服务重启后多次接收BluetoothGattCallback

我正在使用支持BLE的硬件并使用Android的前台服务与硬件通信。前台服务负责处理BLE相关事件,它在一段时间内根据要求工作得很好,但不知何故,如果前台服务被杀死或BLE连接由于任何原因断开,则应用程序会尝试再次重新连接到BLE,然后BLE回调开始从BluetoothGattCallback获取重复事件,即使硬件向蓝牙发送单个事件但AndroidBluetoothGattCallback收到多个相同的回调,这会导致我们的实现出现很多错误。供引用,请按如下方式查看日志,Followingaremethodsandcallbacksfrommyforegroundservice,BLEM

java - Android 5.1以下版本如何在前台运行应用程序

IhaveimplementedasmalltimerapplicationanditisstartingwheneverIreceivedacall,LikeafterreceivinganincomingcallIamstartingmytimerapplicationanddisplayingtimerinforeground.但它在lollipop5.1版本中工作,在后台运行的低端版本中。我需要在所有设备的前台运行应用程序,如何实现?我的代码:Intentit=newIntent("intent.my.action");it.setComponent(newComponentN

java - Android - 什么是前台服务? (与常规服务相比)

现在我有一些类myServiceextendsService()被来自另一个上下文的startServiceIntent调用。该服务在onStartCommand中运行一些代码,然后被销毁/终止。“前台”服务到底是什么?它是如何创建的?它比其他服务持续时间更长吗?如果是这样,那将是理想的,因为我正在修改我的服务中的音乐播放器,我想在后台播放并控制它。现在的问题是我的服务被多次创建和销毁,所以我最终启动了太多的音乐播放器实例并失去了对原始播放器的控制。谢谢。 最佳答案 前台服务是一种播放音乐的服务——如果它被终止,用户会立即注意到这一

android - 如何在前台和后台进程之间同步访问sqlite db?

我有一个在后台运行的服务,可以访问(读取和写入)sqlite数据库。相应的前台进程(主应用程序)也可以访问(读写)我的android应用程序中的sqlite数据库。如何防止与尝试同时访问/保存/读取sqlite数据库相关的问题,正确的方法应该是什么? 最佳答案 有两种简单的方法可以做到这一点,第一种方法如ChirstopheCVB所写:创建一个同步方法。一个同步方法只能被一个线程访问,其他线程被阻塞。这是推荐的方法,因为它将所有与数据库访问相关的代码保存在一个地方。当您更改数据库的表布局时,您不需要搜索所有代码并进行调整。您从主线程

android - Android中的前台到底是什么?

我遇到了有关前台android概念的问题-https://stackoverflow.com/questions/20647168/android-how-to-find-if-any-app-is-running-in-foreground.我需要对android中使用的术语前景进行一些澄清。我想我对android中的背景有一个有效的定义——发生的事情你在屏幕上看不到。前景只是您可以在屏幕上看到并与之互动的东西。就像我要玩飞扬的小鸟游戏一样,游戏本身(跳过管道的鸟)是否会成为前景,因为我可以看到它并与之互动。基于此,游戏音乐会出现在背景中,因为我看不到它吗?

android - 使用 usageStats.getTotalTimeInForeground() 获取设备中每个应用程序在前台花费的时间

我想知道在android设备上运行的所有应用程序所花费的时间。我正在使用以下代码获取所有包名称。请指导我如何链接包和上述方法以获取应用程序花费的时间这是代码Listpacks=getPackageManager().getInstalledPackages(0);for(PackageInfopack:packs){if(pack.firstInstallTime!=pack.lastUpdateTime){Log.i("n-names",pack.applicationInfo.loadLabel(getPackageManager()).toString());Log.i("n-i

带有通知 channel 的 Android 8 前台服务

我想在Android8中启动一个前台服务,我想知道前台服务如何与通知channel系统兼容。假设我们启动了一个前台服务,然后我们立即创建所需的通知并将其分配给一个通知channel。突然,用户决定进入系统设置并禁用通知channel。在这种情况下会发生什么?该服务会成为后台服务吗?它会被杀死吗?我还没有找到记录在案的答案。 最佳答案 默认通知设置:前台服务通知:禁用通知:Android8会在几秒钟后显示此通知(当您将应用程序发送到后台时): 关于带有通知channel的Android8前

android - 使用 UsageStatsManager 获取前台应用

我正在尝试使用UsageStatsManager在带有Marshmallow的Nexus5上获取前台应用程序。我记得它曾经有效,但出于某种原因,我现在得到包/类名称的空字符串。这是我的实现publicString[]getForegroundPackageNameClassNameByUsageStats(){StringpackageNameByUsageStats=null;StringclassByUsageStats=null;if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){UsageStatsManagermUs

android - 我可以在没有 setOngoing(true) 的情况下启动前台服务吗?

我确实有一个在前台启动的服务:valnotification=NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_stat_notify).setContentTitle(title).setTicker(message).setStyle(NotificationCompat.BigTextStyle().bigText(message)).setContentText(message).setContentIntent(pendingIntent).build()startForeground(Notific

android - 如何像前台服务一样启动socket.io来保持连接和监听消息

我正在使用此源应用程序与其他设备聊天。但是如何让它像服务一样启动,以便我可以启动前台服务。我需要在Service中重写MainFragment和LoginActivity吗?socket.io应用socket.io-android-chat我在类SocketService中尝试过类似的东西,即使应用程序关闭,我还需要在应用程序服务中包含其他内容以获取通知消息。publicclassSocketServiceextendsService{privateSocketmSocket;publicstaticfinalStringTAG=SocketService.class.getSimpl