gpt4 book ai didi

在单独的线程上运行的android服务

转载 作者:行者123 更新时间:2023-11-30 04:48:50 25 4
gpt4 key购买 nike

我有一个使用广播接收器在启动时启动的应用程序,我还有一个 Activity 和一个进程,因为服务必须始终在后台运行我正在使用 android:process list 标记在它自己的进程上启动服务.

用户界面仅用于展示需要,我希望即使 Activity 未激活,用户也能够运行该服务。

我正在使用这个额外参数启动服务:

intent.putExtra(Intent.EXTRA_DONT_KILL_APP, true);

问题是,当我按下后退按钮或主页按钮时, Activity 的 on destroy 方法被调用并且该服务虽然看起来正在运行(它出现在任务管理器上)但它没有按预期运行,它应该连接到net 并发送一些数据,但每 X 次使用计时器任务,但任务从不触发,因此数据从不发送。

最佳答案

because the service must run always on the background

请不要那样做。对于初学者来说,这是不可能的,因为 Android 会杀死你,用户也会杀死你。考虑到您当前的实现浪费了多少 RAM,两者都会尝试更快地杀死您。

I am starting the service on it's own process using the android:process manifest tag.

请不要那样做。你在浪费 RAM 没有任何好处。您不需要为此服务单独处理。

I am starting the service using this extra parameter:

该参数与您认为的不同。它不与启动服务一起使用。

it should connect to the net and send some data but every X time using an timer task but the task never fires so the data are never send.

第 1 步:摆脱现有服务。

第 2 步:使用 AlarmManagerWakefulIntentService .安排一个警报(可能使用您的启动时间接收器)“每 X 次”调用一次。让WakefulIntentService“连接到网络并发送一些数据”。

关于在单独的线程上运行的android服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com