从搜索启动Android活动

时间:2013-05-13 19:55:56

标签: android

我的活动:

A - 主要活动(登录屏幕的种类),完成()进行任何其他活动

B - 用户内容

C =其他用户内容

当我去A> B> C,按回家,从启动器启动应用程序,我看到C与后台堆栈恢复B> C(上),这里没问题

当我去A> B> C,按回家,从主屏幕上的谷歌搜索栏启动应用程序,我看到A,带有Back Stack B> C> A(上)。

问题是为什么会发生这种情况,我该如何解决?

Manifest的片段:

<activity
  android:name="ActivityA"
  android:label="@string/app_name"
  android:launchMode="standard"
  android:windowSoftInputMode="stateHidden|adjustPan" >
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity 
    android:name="ActivityB"
    android:label="@string/b_screen_title" >
  </activity>
  <activity
    android:name="ActivityC"
    android:label="@string/c_screen_title"
    android:windowSoftInputMode="stateVisible|adjustResize" >
  </activity>

2 个答案:

答案 0 :(得分:1)

当您使用Google搜索栏然后选择您的应用时,它会启动根活动(在您的情况下为ActivityA)。这与启动应用程序时启动程序的功能不同(如果应用程序已在运行,则只将现有任务带到前台)。要在您的应用中模拟此行为,您可以将以下代码添加到ActivityA.onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate();
    // If we are not the root of this task, it means that this activity has been launched
    //  by another mechanism (ie: Google Search)
    if (!isTaskRoot()) {
        // This isn't the root of this task, so just go away quietly and drop the user
        //  into the application wherever he left it
        finish();
        return;
    }
    // ...the rest of your onCreate() goes here...
}

答案 1 :(得分:0)

来自google开发者网站:

   android:windowSoftInputMode活动的主窗口如何   与包含屏幕软键盘的窗口交互。该   此属性的设置会影响两件事:软件的状态   键盘 - 无论是隐藏还是可见 - 当活动变为时   用户关注的焦点。对活动的调整   主窗口 - 是否调整较小以便为软件腾出空间   键盘或其内容是否平移以使当前焦点可见   当部分窗口被软键盘覆盖时。

     

该设置必须是下表中列出的值之一,   或者一个“州......”值加上一个“调整......”值的组合。   在任一组中设置多个值 - 多个“state ...”值,   例如 - 有未定义的结果。各个值是分开的   通过竖线(|)。

在清单中,您同时给出2个调整参数,这可能导致未定义的结果。 试一试