我创建了一个简单的应用程序,它具有显示某些新闻和在后台播放音乐的功能。问题是:所有测试设备应用程序都运行良好,但在使用Android 5.0.1系统的Nexus 5上,当它最小化(按下主页按钮),音乐音乐关闭,以及当我取消最小化时应用程序重启时,会终止我的应用程序进程。我可以通过下一步来重现它几乎100%: 1)在我的应用程序中按回家。 2)打开Gmail客户端。 3)点击电子邮件中的链接,打开网页浏览器和一些繁重的网站。 我的应用程序不使用largeHeap标志或一些沉重的图像。我建议这是因为手机RAM结束了。我已经从市场上安装了第一个应用程序用于请求"内存使用"。杀死我的应用后,它会在Nexus 5上显示:
总计:1856Mb,可用:429Mb,无效:156Mb,法案:842Mb,thres:219Mb, 低:没有。
我并没有真正地记下这些值(429 + 156 + 842 + 219 = 1646,而不是1856),但看起来有足够的内存。
我无法理解为什么带有2Gb RAM内存的手机系统,只有少数正在运行的应用程序会杀死几分钟前使用的小应用程序而且 - 在后台播放音乐,但在旧设备上一切正常,或者我可能做错了什么?
UPD。清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxxxxx">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:name=".xxxxxx"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="xxxxxx" />
<activity
android:name=".activity.LauncherActivity"
android:theme="@style/Theme.Launcher"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.MainActivity"
android:screenOrientation="portrait" />
</application>
</manifest>
答案 0 :(得分:0)
如果您的应用程序正在播放音乐,并且我假设您正在播放该音乐并在服务上执行操作,请将此服务设为前台优先级,例如here
这样一来,系统不会杀死你的服务,除非世界正在结束,整个事情就会崩溃:)
但有一点需要注意的是,拥有一个前台服务需要一个持久的通知,例如你有一个关闭此服务的按钮。