AndroidManifest.xml中的“android.app.background_running”是什么意思?

时间:2016-03-04 14:03:24

标签: android qt android-manifest

基本上,问题在标题中。

  • 此选项有何功能?
  • 它有什么影响?
  • 它是如何相关的 活动生命周期和/或服务生命周期?

示例:

<?xml version="1.0"?>
<manifest package="org.example.test" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="0.1" android:versionCode="1" android:installLocation="auto">
    <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.StartActivity" android:label="@string/app_name" android:screenOrientation="sensorLandscape" android:launchMode="singleTop" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <!-- Background running -->
            <!-- Warning: changing this value to true may cause unexpected crashes if the
                      application still try to draw after
                      "applicationStateChanged(Qt::ApplicationSuspended)"
                      signal is sent! -->
                <meta-data android:name="android.app.background_running" android:value="true"/>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="19"/>
    <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
</manifest>

它用于Android的QT应用程序,但我认为它与QT无关,因为它在清单中。我错了吗?

2 个答案:

答案 0 :(得分:0)

经过长时间的搜索,这就是我找到的

  

这个选项有什么作用?

android.app.background_running 设置为true意味着不要冻结Qt主循环,但必须确保在应用程序背景化时不绘制任何内容。< / p>

这个SO答案说明我们如何更改其默认值QT 5 android, Change background_running value to True

答案 1 :(得分:0)

由于此选项与我之前认为的Android API无关,因此我开始深入研究QT源代码的含义。

设置此选项将导出QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED环境变量,该变量将由QT本机代码检查并将停止事件调度程序(从那时起将不会调用QCoreApplication::processEvents)用于应用程序的QT部分主要活动已由onStop()和onPause()方法停止或暂停。这就是“冻结”事件循环的意思。

我不知道应该注意的所有注意事项,但我会在发现后立即更新我的答案。