Cod*_*ody 36 android android-manifest android-activity
我发现在我的应用程序中,用户可以在用户使用应用程序时打开的各种活动中完全"嵌套".
例如:
现在,当用户按下时,它必须经过两次"对象子细节"(相同的对象,当它被编辑时返回到详细页面),"父对象细节"也会发生同样的事情.
有没有办法重用活动,如果它们已经在堆栈中打开,并将它们重新排序到前面?我看到的唯一方法是使用该launcher
属性进行活动.我相信我看到的singleTask
和singleTop
.
如果我应该使用这两个属性,singleTask
并且singleTop
我应该如何使用它们?当我试图将它们包含在应用程序中时,它没有任何区别.使用时启动意图时是否还需要设置标志startActivity
?
ud_*_*_an 43
在Manifest Activity属性中,您可以提供此参数 android:launchMode="singleInstance"
请在此处阅读更多详细信息,请访问http://developer.android.com/guide/topics/manifest/activity-element.html
Vik*_*rla 27
这是你的旗帜! http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
Run Code Online (Sandbox Code Playgroud)
注意'addFlags'.另请注意,onCreate
在向其传递新Intent时,不会调用此Activity.它将通过onNewIntent()
.
这不能确保活动的单个实例正在运行.为了确保这一点,请查看:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
Bal*_*alu 25
使用android:launchMode ="singleTask"可能是最好的方法,因为如果活动已经在运行,它将不会重新创建活动.只需将其添加到AndroidManifest.xml中的活动中,您就应该全部设置好.
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
>
<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)
这是另一个可能有用的问题:Android singleTask或singleInstance启动模式?
这对我有用.
Intent intent = new Intent(this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
如果此Activity的实例已存在,则它将移至前面.如果实例不存在,则将创建新实例.