标签: launchmode

singleInstance 活动的任务关联性?

我想知道 singleInstance 活动的默认任务亲和力是什么?

由于每个 singleInstance Activity 在新任务中作为根 Activity 打开。并且无需声明 android:taskAffinity。

请参阅我已阅读 Android Activity 的开发人员指南和文档。

https://developer.android.com/guide/components/activities/tasks-and-back-stackhttps://developer.android.com/guide/topics/manifest/activity-element.html#aff

<activity android:name=".MainActivity"
                  android:launchMode="singleInstance"
        >
</activity>
Run Code Online (Sandbox Code Playgroud)

我想知道该任务的 taskAffinity - 字符串文字,其中 singleInstance 活动作为根驻留在其中。

android taskaffinity launchmode android-activity

4
推荐指数
1
解决办法
2097
查看次数

SplashScreen的Acitivity SingleTask行为

在我的应用程序中,我有:

-SplashScreen(SSc)准备应用程序(启动服务等)-MainActivity(MA)应用程序中最相关的部分,用于处理大多数操作-以及其他一些不相关的活动

对于我的应用程序,我希望具有类似launchMode singleTask的行为,以便即使通过链接打开我的应用程序,它也总是作为一个新任务启动,请在SMS / EMail应用程序中单击。最好是只有一个我的活动实例,因为它们都是可以连续导航的。

但是,当我以singleTask身份启动SSc时,它是堆栈的根并导航到MainActivity,按Home键,再次单击Launcher图标,应用程序将完全重新启动。因此,再次显示SSc,依此类推。在这种情况下,我希望将MainActivty放在首位。

我的愿望是:launcherclick-> SSc-> MA-> HOME-> launcherclick->将MA置于最前面-> HOME->从最近的站点重新启动->将MA置于最前面

单击具有相同实例的链接-> SSc / MA(是否首次启动)

在我的应用程序中,有多个实例是没有意义的,因为后台服务一次只能处理一个MainActivity,因为它仅针对可见的“事物”轮询数据。

您对实现这个目标有什么建议吗?

我的第一个想法是带有launchMode singletask的LauncherActivity,它没有布局以将意图路由到其他活动(最有可能是singleTop!?,因为它仅在一个任务中),例如:

public class LauncherActivity extends Activity {
 private boolean firstStart = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume() {
        super.onResume();
        if(firstStart){
            startActivity(new Intent(this, SplashScreen.class));
            firstStart = false;
        } else {
            Intent i = new Intent(this, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

清单xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="x.startintenttest">

    <application
        android:allowBackup="true"
        android:allowTaskReparenting="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <activity …
Run Code Online (Sandbox Code Playgroud)

android android-manifest launchmode android-activity

3
推荐指数
1
解决办法
1768
查看次数

Up Navigation 和 singleTop 启动模式

我有一个活动 A,当我按下工具栏项时,它使用 startActivity(intent) 启动活动 B。每当我按下后退按钮或向上导航图标时,它都会关闭我的应用程序。我相信这是因为我在我的父活动中使用了 launchMode="singleTop"(我使用它是因为我有一个搜索视图和一个可搜索的配置,因为我不想开始我的另一个活动实例进行搜索)。所以问题是:如何在不关闭我的应用程序的情况下使用向上导航和后退按钮从子活动(B)返回到父活动(A)?我已经搜索过了,我发现了一些关于 onNewIntent() 的信息。如果这是我的解决方案,我应该如何正确使用它?


这是我的清单文件:

        <activity
            android:name="com.example.fernando.inspectionrover.MainActivity"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.SEARCH" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>
        <activity
            android:name="com.example.fernando.inspectionrover.BluetoothSettingsActivity"
            android:parentActivityName="com.example.fernando.inspectionrover.MainActivity"
            android:screenOrientation="landscape">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.fernando.inspectionrover.MainActivity" />
Run Code Online (Sandbox Code Playgroud)

以下是如何开始我的新活动:

switch (id) {
            case R.id.bluetoothActivity:
                Intent switchActivity = new Intent(this, BluetoothSettingsActivity.class);
                startActivity(switchActivity);
                Log.i(LIFE_CYCLE, "Switching from " + getLocalClassName() + " to Bluetooth Setting Activity");
                finish();
                break;
        }
Run Code Online (Sandbox Code Playgroud)

android launchmode android-activity up-navigation

3
推荐指数
1
解决办法
2888
查看次数

如何让我的 Activity 的单个实例与 backstack 一起工作?

我有一个带有MainActivityChildAaActivity的应用程序ChildBbActivity

MainActivity 可以将我们发送到任一子活动,并且用户可以根据需要在两个子活动之间移动。

但是,其中每一项活动只​​能有一个实例。

问题是,如果我创建子活动singleInstance,那么它们都是单独的任务,切换到另一个应用程序并返回到子活动意味着onBackPress我退出该应用程序(当我应该返回 MainActivity 时)

如果我launchMode按照标准离开,那么我会得到多个子活动实例,尤其是在两个孩子之间来回移动时。

如果我使用singleTop,那么我就会遇到这两个问题

如果我noHistory对孩子们使用,我无法在他们之间自由移动(第一次后按将使我返回到 MainActivity)

使用isTaskRoot()显然不会修复singleInstance应用程序退出错误,因为它始终为真(并且对于其他场景没有用)

我应该如何正确实现我需要的行为?

  • 返回堆栈中每个 Activity 仅有一个实例
  • 全部在同一个任务中/切换应用程序后不要退出 onBackPress

android android-intent launchmode android-activity

3
推荐指数
1
解决办法
1317
查看次数

如何实时检查Android APP的后台?

我正在玩Android,当我测试不同的活动/意图标志或启动模式时,我无法获得预期的行为(特别是当不同的活动有不同的标志时).我已经非常仔细地阅读了Google Dev Guide,但仍无法解释我得到的结果.

我想知道如果有一些调试工具或某些方法我可以实时检查不同任务的后台?

Looking forward to your expertise or comments.
Run Code Online (Sandbox Code Playgroud)

谢谢.

android android-intent launchmode android-activity

2
推荐指数
1
解决办法
984
查看次数

理解 android:launchMode

我对 Android 中的不同活动启动模式感到非常困惑。我知道它与活动堆栈有关,这对我来说也不太清楚。我希望通过一个简单的用例对每个 launchMode 进行简短的解释。

android activity-stack launchmode android-activity

2
推荐指数
2
解决办法
2538
查看次数

应用程序在Play商店重新启动打开单击

 <activity
            android:name=".activity.landingpage.LandingPageActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
Run Code Online (Sandbox Code Playgroud)

所以很简单.当我从启动器图标打开我的应用程序,它opens.I去点击启动我的应用程序图标再次再次带来了我的申请前自open.However,如果我去Play商店,点击打开从那里我的应用程序有两个实例打开.如果你想要一个如何工作的例子,facebook也有同样的问题.另外一个app fotmob也有同样的问题.

android launchmode

2
推荐指数
1
解决办法
746
查看次数