0

我有一个从 PC 远程控制的工业应用程序。该应用程序有 2 个略有不同的版本 - 一个用于 Honeycomb 平板电脑,另一个用于 Gingerbread 手机。不同之处在于利用硬件中的独特功能(例如,手机有更好的摄像头,平板电脑可以显示更大的图形)但活动启动代码是相同的。

应用程序中的线程接收来自 PC 的命令并显示不同的屏幕(即启动不同的活动)。它在手机上运行良好,但在平板电脑上,一项活动不会开始,但不会引发异常。断点和登录该活动的onResume()永远不会被命中,即使它们在电话上。这是我尝试开始活动的方式。. .

    try {
        Intent svc = new Intent(ctx, RemoteControlActivity.class);
        ctx.startActivity(svc);
    } 
    catch (Exception e) {  // or ActivityNotFoundException e
        Log.d("ShowButtons(normal)", "startActivity failed");
    }    

(ctx 是一个上下文 - 在调试器中,上下文对于在非工作情况下的工作都是相同的)

无法在平板电脑上启动的活动在 manifest 中是这样定义的。. .

   <activity
       android:launchMode="singleTask"   
       android:label="@string/app_name"
       android:windowNoTitle="false"
       android:configChanges="orientation"
       android:screenOrientation="landscape"
       android:name="RemoteControlActivity">
       <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />  
       </intent-filter>
    </activity>

这让我很生气 - 在此先感谢您的帮助!

4

2 回答 2

0

试试这个

   Intent svc = new Intent(ctx, RemoteControlActivity.class);
   svc.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   ctx.startActivity(svc);

根据文档

使用此标志时,如果您现在正在启动的 Activity 已经在运行任务,则不会启动新的 Activity;相反,当前任务将简单地以其上次所处的状态被带到屏幕的前面

于 2012-12-10T16:34:36.303 回答
0

我找到了解决方案。我以这种方式发布它,因此我可以将其标记为“已回答”,以防其他人遇到此问题并正在寻找解决方法。但我承认我不明白它为什么起作用。

突破是发现当我尝试启动 RemoteControlActivity 时屏幕上当前的活动很重要。当我有一个在屏幕上显示一些图形的活动时发生了故障。我替换了一个显示一些按钮的不同活动,问题就消失了。

查看清单我注意到“好”活动设置为:

Android:launchMode="singleTask"

而“坏”的设置为:

Android:launchMode="singleInstance"

当我将图形活动更改为“singleTask”时,问题就消失了。

于 2012-12-10T18:20:42.533 回答