我有半透明主题的活动:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Run Code Online (Sandbox Code Playgroud)
此问题也可以通过以下主题重现:
<style name="MyTheme" parent="@android:style/Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackground">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)
此活动在启动时加载并保存在内存中(当我开始此活动时,我将该FLAG_ACTIVITY_REORDER_TO_FRONT标志作为额外标记).
问题:当我开始此活动时(从菜单中),活动没有显示,没有任何反应.但是:如果我删除半透明主题:一切正常,活动就会回到正面.
是的onNewIntent()被调用.
如果我按回半透明活动是下面的那个!但它需要成为顶级.
一个例子是
A(半透明活动)BC
堆栈:A
一个startActivity(B)
堆栈:A,B
B startActivity(C)
堆栈:A,B,C
c startActivity(A)//带有标志FLAG_ACTIVITY_REORDER_TO_FRONT
堆栈应为:B,C,A
但是A永远不会被带到前面,尽管它的onNewIntent()被调用.
有任何想法吗?
旁注
有趣的未回答的问题:http://groups.google.com/group/android-developers/browse_thread/thread/269c67f6b39cfe45?pli = 1
android:launchMode的singleTask或singleInstance不希望被使用.这些更改了backstack并将活动移动到自己的堆栈中.因此我们不再有A,B,C了.
singleTask和singleInstance - 不适合大多数应用程序,因为它们会导致用户可能不熟悉的交互模型,并且与大多数其他应用程序非常不同.
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
想要直观表示launchModes的任何人都可以尝试以下应用:https://play.google.com/store/apps/details? id = com.novoda.demos.activitylaunchmode
我需要从我的应用程序调用我手机附带的默认主屏幕,这也是一个主屏幕应用程序.我试过搜索并找到了这个
ArrayList<Intent> intentList = new ArrayList<Intent>();
Intent intent=null;
final PackageManager packageManager=getPackageManager();
for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(new
Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),
PackageManager.MATCH_DEFAULT_ONLY)) {
intent=packageManager.getLaunchIntentForPackage(
resolveInfo.activityInfo.packageName);
intentList.add(intent);
}
Run Code Online (Sandbox Code Playgroud)
此代码适用于所有其他启动程序,但不适用于默认启动程序.我尝试在代码中使用断点,并发现在列表的0索引处应该有默认的启动器意图,但意图不保持该值.我需要某种许可吗谢谢