因此,我一直在阅读“ 任务”,“后退堆栈”和“概述屏幕”上的文档,有一件事使我感到困惑。在launchMode这里阅读完之后documentLaunchMode:http : //developer.android.com/guide/components/tasks-and-back-stack.html然后在这里阅读:http : //developer.android.com/guide/components/recents.html我无法分辨它们之间的差异!
两者都被描述为提供控制相对于当前任务(启动活动的任务)的任务中新活动的启动的方法。那么这两种模式有何不同?-document的附加意味着什么?
以下是直接在清单文件中使用它们的文档:
LaunchMode: http : //developer.android.com/guide/topics/manifest/activity-element.html#lmode
DocumentLaunchMode: http : //developer.android。 com / guide / topics / manifest / activity-element.html#dlmode
我一直在阅读有关发射模式的文档,有一点我没有理解.该文档说singleTask活动始终是堆栈的根:
相比之下,"singleTask"和"singleInstance"活动只能开始一项任务.它们始终位于活动堆栈的根部.此外,设备一次只能保存一个活动实例 - 只有一个这样的任务.
但是:如果你看一下图4中的这部分文档,你会看到当Activity 2启动Activity Y(将该任务置于前台)时,Activity Y已经位于任务的顶部并且将位于当前的顶部任务,而不是根.
我在这个模拟应用程序中尝试了这个场景,当我创建singleTask活动时,它总是创建一个新任务.但是,如果唯一的实例已经存在,则它将完成高于此实例的所有活动,因此唯一的实例可以是根(也是任务中的唯一活动).
活动Y如何成为活动X上方任务的首位?
我还有其他原因吗?
PS:我也不太了解Task和后台堆栈之间的区别.
我使用下面的代码检查最后Fragment一个Activity以弹出一个对话框
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Check if there is only one fragment
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (getSupportFragmentManager().getBackStackEntryCount() == 1) {
DlgUniversalError.shallIQuit(this, getApplicationContext()
.getResources().getString(R.string.doYouWantToQuit),
getSupportFragmentManager());
return false;
}
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
现在假设我有一套Activitys.如何Activity判断Activity堆栈中是否为最后一个,并弹出退出对话框?
android android-lifecycle android-activity back-stack android-task
我的应用程序有两个活动 A 和 B。A 是任务的根,并且是从启动图标启动的那个。B 可以从 A 开始。
除了从启动图标启动 A 之外,还可以通过单击另一个应用程序中的文件来启动 A,例如单击电子邮件附件或 Drive 中的文件。我通过向清单文件中的意图过滤器添加操作和类别来完成此操作。
我想让它在从另一个应用程序启动 A 时,而不是创建一个新任务,我希望现有任务恢复到与之前相同的状态。这可能是活动 A 或 B,无论用户在他们按下家之前碰巧在哪里。
我尝试了各种启动模式和意图标志,但似乎没有任何效果。
我正在尝试在 Android 中开发一个应用程序,其中有一些需要在一段时间后执行的操作。
我可以做些什么来实现这个目标?
我有一个应用程序,它具有大多数活动的常规任务行为,但它也有一个需要启动到创建它的任务的活动。
该活动是从哑剧类型发起的。如果另一个应用程序启动该活动,则该活动应显示在同一任务中。然而,该活动始终会重新确定其应用程序任务的父级。尽管明确设置allowTaskReparenting为,但还是如此false。
当应用程序中没有其他活动时,活动会在启动它的任务中正确启动。仅当任务中存在应用程序的其他活动时,它才重新确定父级。
如何让该 Activity 仅在启动它的 Activity 之上启动,与同一应用程序的其他 Activity 分开?以下是 AndroidManifest.xml 的相关部分:
<activity
android:name="com.matthewmitchell.peercoin_android_wallet.ui.RestoreWalletActivity"
android:configChanges="orientation|keyboard|keyboardHidden"
android:theme="@style/My.Theme.Dialog"
android:allowTaskReparenting="false" >
<intent-filter android:label="@string/import_keys_intent_filter_action" >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/x-peercoin-wallet-backup" />
<data android:mimeType="application/octet-stream" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud) android android-manifest android-intent android-activity android-task
我知道当我们按下后退按钮时,onBackPressed()会调用默认功能.
http://developer.android.com/reference/android/app/Activity.html#onBackPressed()
该文档说"默认实现只完成当前活动".这意味着什么,它是否意味着默认的onBackPressed()包括函数finish()?
finish()里面的实现是什么?那是onDestroy()吗?