问题标签 [android-service]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用android中的计时器每10分钟跟踪一次Gps
我正在开发一个 android 应用程序,我正在使用每 10 分钟通过 GPS 跟踪位置的服务。但是当我将位置侦听器放在计时器任务中时,它会引发异常:
无法将代码放入尚未调用的线程中
looper.prepare()
。
有人对这个问题有任何见解吗?
android - 服务进度更新
如何从服务获取活动更新?例如,如果我正在下载一个文件,我想在活动中显示一个进度条。我不想使用 AsyncTask (它们只在活动处于焦点时运行,这不好)。
许多应用程序都这样做,所以当然有可能,但很难找到一个例子。
android - getApplication() 与 getApplicationContext()
我找不到令人满意的答案,所以我们开始吧:Activity/Service.getApplication()
和有什么关系Context.getApplicationContext()
?
在我们的应用程序中,两者都返回相同的对象。然而ActivityTestCase
,模拟应用程序将getApplication()
返回模拟,但getApplicationContext
仍将返回不同的上下文实例(由 Android 注入的实例)。那是一个错误吗?是故意的吗?
我什至不明白首先有什么区别。在测试套件之外是否存在两个调用可能返回不同对象的情况?什么时候,为什么?此外,为什么在and上getApplication
定义,而不是在 上?不应该总是有一个有效的应用程序实例可以从任何地方获得吗?Activity
Service
Context
android - Android RuntimeException:无法实例化服务
我想创建一个将在单独的线程(而不是 UI 线程)上运行的服务,所以我实现了一个扩展 IntentService 的类。但我没有运气。这是代码。
Activity 按钮中的服务消费点击:
android - 如何在服务中获取 WifiManager 对象?
我正在为 Android 编写一个应用程序,它会生成一个定期检查 wifi 状态并根据某些条件更改它的服务。我的问题是,每当我尝试创建一个 WifiManager 对象来检查 wifi 的状态(并可能控制它)时,它都会给我一个未初始化的对象。这是代码:
这是到达此代码时日志中的行。
显然我没有得到系统 WifiManager 对象。我知道这与我在一个线程服务中的事实有关,但我仍然无法理解这个概念,并解释一下它为什么不起作用以及如何修复它,我将不胜感激。
(在某种不相关的注释中,我认为解释也可以解释为什么我不能Toast.makeText(getBaseContext(), "Checking Wifi...", Toast.LENGTH_SHORT).show();
在服务中使用该行)
android - Android 服务丢失 ArrayList
编辑:这是PasteBin 的来源。我觉得我可能需要重新设计整个服务.. :(
我是RingPack的开发者。基本思想是在后台启动一个服务,负责为用户切换铃声。我在丢失对服务中的 ArrayList 的引用时遇到问题。我想我可能误解了生命周期是如何工作的。我的意图是在用户从 Activity 中选择一个包时启动它。
Intent i = new Intent(RingActivity.this, RingService.class);
i.putExtra(RingService.ACTION, RingService.PACK_SET);
i.putExtra(RingService.PASSED_PACK, currentPackId);
RingActivity.this.startService(i);
我告诉服务将默认通知音设置为与“currentPackId”对应的包的第一个音。
当用户想要关闭 RingPack 时,禁用是这样完成的:
Intent i = new Intent(RingActivity.this, RingService.class);
RingActivity.this.stopService(i);
Toast.makeText(RingActivity.this.getBaseContext(), RingActivity.this.getString(R.string.ringPackDisabled), Toast.LENGTH_SHORT).show();
所以服务的 onCreate 看起来像这样:
然后将其传递给 onStartCommand,后者返回 START_NOT_STICKY(因为我将手动创建和销毁服务),后者将其传递给 handleStart()。
isSdOk() 方法只检查 SD 卡是否已安装,因为铃声存储在其上。initControl() 只是保存用户的默认铃声,以便我们可以在他们禁用我们时将其归还。setPack() 方法如下所示:
音调 ArrayList 是我一直在失去的。这是它被初始化的地方。它包含一个包中所有启用的铃声的 ID。我看到的 NullPointerException 在 swapTone() 中:
我希望它起作用的方式是,如果 setPack() 还没有调用 swapTone() ,则永远不会被调用。同样,我的用户不断收到此错误,但我自己无法重现它。任何帮助将不胜感激。我为代码墙道歉,但我很困惑。也许我没有正确使用服务的概念?
android - Android 架构设计 - 如何正确做?
一个好的安卓应用架构是什么样的?是否应该在后台服务中完成所有“工作/业务逻辑”并且 Activity 仅与服务通信以从某处(本地/远程)查询/获取数据?
您会将 Activity 调用的“服务”实现为真正的 Android 服务吗?或完成工作的 POJO-Singleton(可能使用后台线程)。或者在您的活动中实例化后台线程以执行耗时的操作(查询网络服务)。
您如何以正确的方式抽象您的数据访问?您会使用 ContentProvider 来访问/抽象您的数据吗?应该如何/从哪里查询?活动?服务?..?
我试图寻找一个好的应用程序架构设计,但我只找到了 Android 架构的样子,而不是 Android 应用程序的样子。
那么您对此有何看法?Android 应用程序的哪些组件应该相互通信以确保最佳的可扩展性/封装性,...?
java - 数据库上的服务插入超出预期
我从 CallLog 中获取联系人,并使用带有 ContentObserver 的服务将其插入数据库。因此,ContentObserver 会继续观察 CallLog 是否发生了一些新变化,如果是,则在 onChange() 方法中调用获取 CallLog 中的数据并将其插入数据库的方法。
但是,问题是,如果我打一个新的电话,有一个新数据,所以,它必须插入到数据库中,只有一个新行,但它插入了 3 行。我不知道为什么。我在 Android 2.3 Emulator 上对其进行了测试,在模拟器上它还可以,但在真正的 2.3 设备上它会发生。在 2.1 模拟器中它也会发生。
所以这是我的代码。该服务已发布。谢谢!
这是服务MyApplicationService.java
android - 在不同的进程中将自定义对象传递给android服务
我有一项服务设置为在单独的进程中启动:
我可以使用 bindService() 成功绑定到它。当我尝试通过调用 Messenger.send() 发送消息时出现我的问题:
其中 uploadRequest 是实现 Parcelable 的自定义对象
}
我在我的服务句柄消息中设置了一个断点,但我的应用程序永远不会到达断点。但是,如果不是使用我的自定义 UploadRequest 对象我发送 null,我会像我期望的那样到达 handleMessage 断点,但显然我此时无能为力。当调用 writeToParcel 返回非空字符串时,我已经验证了 file.getPath()。这让我相信我的 UploadRequest 课程中有问题,但通过谷歌搜索我看不出我的课程有什么问题。有任何想法吗?
android - 从主键屏幕开始活动
我有一个启动活动的后台服务,
销毁此Activity并通过“长按home键菜单”重新启动后,此Activity再次启动。但我想开始主要活动。我怎么能意识到这一点?