Titanium Android应用程序在发送到后台后不会重新启动,并且建议的修复程序不起作用

时间:2014-01-10 00:33:57

标签: android android-activity titanium appcelerator titanium-alloy

我正在使用TItanium SDK 3.1.3并且我的项目是在Alloy 1.0中制作的,过去曾报告过我遇到的问题,但即使我尝试使用推荐的修复程序,它也只是赢了'工作。 到目前为止,我已经看过thisthis票证,使用属性

<property name="ti.android.root.reappears.restart" type="bool">true</property>

和属性

android:alwaysRetainTaskState="true"
我的tiapp.xml上的

似乎根本不起作用。 这是我的tiapp.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ti:app xmlns:ti="http://ti.appcelerator.org">
    <id>com.nenvo.inTeamAlloy</id>
    <name>inTeamAlloy</name>
    <version>1.0</version>
    <publisher></publisher>
    <url>http://nenvo.com</url>
    <description>not specified</description>
    <copyright></copyright>
    <icon>appicon.png</icon>
    <persistent-wifi>false</persistent-wifi>
    <prerendered-icon>false</prerendered-icon>
    <statusbar-style>default</statusbar-style>
    <statusbar-hidden>false</statusbar-hidden>
    <fullscreen>false</fullscreen>
    <navbar-hidden>true</navbar-hidden>
    <analytics>true</analytics>
    <guid>c0d02147-bb42-4e9c-b29d-8c4686269836</guid>
    <property name="ti.ui.defaultunit" type="string">system</property>
    <property name="ti.android.threadstacksize" type="int">81920</property>
    <property name="ti.android.bug2373.finishfalseroot" type="bool">true</property>
    <!-- <property name="ti.android.root.reappears.restart" type="bool">true</property> -->
    <property name="ti.android.root.reappears.restart" type="bool">true</property> 

    <iphone>
        <orientations device="iphone">
            <orientation>Ti.UI.PORTRAIT</orientation>
        </orientations>
        <orientations device="ipad">
            <orientation>Ti.UI.PORTRAIT</orientation>
            <orientation>Ti.UI.UPSIDE_PORTRAIT</orientation>
            <orientation>Ti.UI.LANDSCAPE_LEFT</orientation>
            <orientation>Ti.UI.LANDSCAPE_RIGHT</orientation>
        </orientations>
    </iphone>
    <android xmlns:android="http://schemas.android.com/apk/res/android">
        <tool-api-level>17</tool-api-level>
        <manifest android:installLocation="auto" >
             <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17"/>
            <application android:largeHeap="true" android:hardwareAccelerated="true" android:theme="@style/Theme.MyTheme">

                <!-- TI_APPLICATION -->
                <activity android:name=".InteamalloyActivity"
                android:screenOrientation="portrait"
                android:alwaysRetainTaskState="true" 
                android:label="inTeamAlloy"  android:theme="@style/Theme.Titanium" 
                android:configChanges="keyboardHidden"><!-- android:theme="@style/Theme.Titanium" -->
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>

                <activity
                android:name="ti.modules.titanium.media.TiCameraActivity"
                android:screenOrientation="portrait"
                android:configChanges="keyboardHidden"
                android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
                />

                <activity android:name="org.appcelerator.titanium.TiActivity"
                android:screenOrientation="portrait"
                android:configChanges="keyboardHidden" />

                <activity android:name="org.appcelerator.titanium.TiTranslucentActivity"
                android:screenOrientation="portrait"
                android:configChanges="keyboardHidden"
                android:theme="@android:style/Theme.Translucent" />

                <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity"
                android:screenOrientation="portrait"
                android:configChanges="keyboardHidden"/>

            </application>
        </manifest>
    </android>
    <mobileweb>
        <precache/>
        <splash>
            <enabled>true</enabled>
            <inline-css-images>true</inline-css-images>
        </splash>
        <theme>default</theme>
    </mobileweb>
    <modules>
        <module platform="android" version="2.3.2">ti.urbanairship</module>
        <module platform="android" version="0.1">net.iamyellow.tiws</module>
    </modules>
    <deployment-targets>
        <target device="android">true</target>
        <target device="blackberry">false</target>
        <target device="ipad">false</target>
        <target device="iphone">true</target>
        <target device="mobileweb">false</target>
        <target device="tizen">false</target>
    </deployment-targets>
    <sdk-version>3.1.3.GA</sdk-version>
    <plugins>
        <plugin version="1.0">ti.alloy</plugin>
    </plugins>
    <property name="ti.deploytype">development</property>
</ti:app>

在这件事上我有什么选择? Alloy项目是否有解决方法?

1 个答案:

答案 0 :(得分:0)

在挖掘Android Activity documentation后,我在根Activity中尝试了另一个属性:

<activity android:name=".InteamalloyActivity"
    android:screenOrientation="portrait"
    android:clearTaskOnLaunch="true" <!-- This property -->
    android:label="inTeamAlloy"  
    android:theme="@style/Theme.Titanium" 
    android:configChanges="keyboardHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

使用 clearTaskOnLaunch 属性,根据文档:

  

是否将从任务中删除所有活动,除外   对于根活动,无论何时从主屏幕重新启动    - 如果任务总是被剥离到其根活动,则为“true”   如果不是“假”。默认值为“false”。这个属性是   仅对启动新任务的活动有意义(根   活动);它被任务中的所有其他活动忽略。当。。。的时候   值为“true”,每次用户再次启动任务时,它们都是   无论他们上次做什么,都会带来根本活动   在任务中,无论他们是否使用Back或Home   按钮离开它。当值为“false”时,可以清除任务   某些情况下的活动(请参阅alwaysRetainTaskState   属性),但并非总是如此。

     

例如,假设有人从家中启动活动P.   屏幕,从那里去活动Q.用户接下来按Home,   然后返回活动P.通常,用户会看到活动   问:因为这是他们上次在P的任务中做的事情。但是,如果P   将此标志设置为“true”,将所有活动设置在其上(Q在此   当用户按下Home并且任务转到了   背景。因此用户在返回任务时只看到P.

     

如果此属性和allowTaskReparenting都是“true”,则为any   可以重新制作父母的活动将移动到他们共享的任务中   亲和力;如上所述,其余的活动随后被删除   上方。

这样,当根活动是将应用程序发送到后台时处于活动状态的活动时,应用程序将在与根活动相关的任务被操作系统终止后重新启动。虽然这不是应用程序中的最佳和最期望的行为,但它确实是使用Titanium时的方法。