gpt4 book ai didi

android - 即使在 startForeground 时音乐服务也被杀死

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:13 27 4
gpt4 key购买 nike

是否可以防止 Service(startForground) 被 os 杀死?我用它来播放音频但是当我使用另一个需要更多资源的应用程序(愤怒的小鸟去)一段时间时它被杀死了。在日志中,我看到应用进程被 ActivityManager 杀死。我也用其他一些音频应用程序复制了它。唯一未被杀死的应用程序是 Play Music 应用程序。它是在三星 s3 android 4.3 上复制的。

最佳答案

Is it possible to prevent Service(startForground) from being killed by os?

没有。 Android 决定何时停止哪个进程。唯一的方法是通过减少它消耗的内存量来使其“停止时不那么吸引人”。

节省内存。将服务放入它自己的非常小的进程中。这样 android 操作系统就可以终止主进程以回收内存,并且您的服务可以继续运行。通过传入用于启动服务的 Intent 的设置和首选项来维护一个微小的服务代码。

注意微型服务必须是前台服务,这意味着它必须在状态栏中显示图标。

单独进程的 list

        <service
android:name="com.gosylvester.bestrides.ServiceLocationRecorder"
android:process=":bestRidesService" >
</service>
</application>

传递用于启动服务的 Intent 设置。只需重新启动服务即可更改设置。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
boolean isTrackerMarker = SettingMarker.TRACKER_MARKER_DEFAULT;
if (intent != null) {
// intent is processing = b
isMiles = intent.getBooleanExtra(
SettingApplication.APPLICATION_MILE,
SettingApplication.APPLICATION_MILE_DEFAULT);
isRecordAccuracy = intent.getBooleanExtra(
SettingRecord.RECORD_ACCURACY,
SettingRecord.RECORD_ACCURACY_DEFAULT);
locationInterval = intent.getLongExtra(SettingRecord.RECORD_MIlLIS,
SettingRecord.RECORD_PRESET_MEDIUM_MILLIS);
startMillis = intent.getLongExtra(BUNDLE_START_MILLIS, 0);
distance = intent.getDoubleExtra(
ServiceLocationRecorder.BUNDLE_TRACKED_DISTANCE, 0);
recordDistance = (float) intent.getIntExtra(
SettingRecord.RECORD_DISTANCE,
SettingRecord.RECORD_PRESET_MEDIUM_DISTANCE);
boolean newIsRecording = intent.getBooleanExtra(
SettingRecord.RECORDING, isRecording);

isTrackerMarker = intent.getBooleanExtra(
SettingMarker.TRACKER_MARKER,
SettingMarker.TRACKER_MARKER_DEFAULT);
startRecording(newIsRecording);
}

关于android - 即使在 startForeground 时音乐服务也被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553148/

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