Android 我的应用程序会从启动模式和意图标志中受益吗?

Android 我的应用程序会从启动模式和意图标志中受益吗?,android,android-intent,flags,Android,Android Intent,Flags,我编写了一个简单的数独解题应用程序,如下所示: 当你按下一个按钮时,一个小键盘会显示出来,让你选择要连接到该按钮的数字。典型的用例可能是,用户打开应用程序,然后分配组成他们想要解决的数独难题的所有数字,然后按下“解决”按钮 根据我对Android的理解,这将创建一个由许多主活动和键盘活动组成的任务(键盘是一个对话框活动)。每次分配新号码时,当小键盘出现时,您都会将小键盘活动置于主活动的上方。然后,当您选择了一个数字并且键盘显示时,您将在键盘活动上方放置另一个主要活动 这就是你得到很多你并不真正需

我编写了一个简单的数独解题应用程序,如下所示:

当你按下一个按钮时,一个小键盘会显示出来,让你选择要连接到该按钮的数字。典型的用例可能是,用户打开应用程序,然后分配组成他们想要解决的数独难题的所有数字,然后按下“解决”按钮

根据我对Android的理解,这将创建一个由许多主活动和键盘活动组成的任务(键盘是一个对话框活动)。每次分配新号码时,当小键盘出现时,您都会将小键盘活动置于主活动的上方。然后,当您选择了一个数字并且键盘显示时,您将在键盘活动上方放置另一个主要活动

这就是你得到很多你并不真正需要的活动的原因吗?我误解了这件事吗


我应该使用启动模式和意图标志反复使用相同的主活动和键盘,还是只使用标准版本就可以了?

根据我对您问题的理解,您可以使用
意图标志
标志将活动重新排序到前面。如果
活动
已经在堆栈上,那么它会如它所说的那样,将其带到堆栈顶部,这样您就不会有多个实例

差不多

 Intent i = new Intent(MainActivity.this, KeypadActivity.class);
 i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
 startActivity(i);
您可以找到所有可用的
标志

另外,当您完成并转到下一个操作时,在键盘上调用
finish()
,比如说“活动”
,将使其脱离堆栈


弹出安卓键盘是安卓系统本身处理的一项功能/服务。它不会使用活动来显示你的活动。就我个人而言,我只会在屏幕底部放置9个带编号的按钮,用于纵向显示,或在屏幕侧面放置9个带编号的按钮,用于横向显示。它将保存一个弹出键盘的出现和消失,需要更少的代码。是的,我这样做了,但后来我改成了这个,因为我想尝试如何做。我真的是一个为android开发的新手,所以我只是尝试了一些东西来学习。瓦卡斯:这不是安卓键盘,这是一个键盘对话框,看屏幕截图。@Alex:好的。我很感激你尝试不同的想法,但请记住UX意味着设计最容易被最终用户访问和使用的应用程序。另外,你关心活动的来来往往这一事实向我暗示,将所有内容都显示在屏幕上是一个更干净的解决方案。问题是,键盘调用finish()以使其消失。这会删除任务顶部的键盘活动吗?其实没有问题。我刚刚读到它,这就是我对它的解释。是的,调用
finish()
将从堆栈中删除它。请稍等,我将编辑一个关于处理堆栈和导航的Google演示文稿的链接…添加了链接。非常有用好的,那么我每次都会使用相同的主要活动(数独板的活动)吗?有没有一种方法可以创建一个可重复使用的小键盘,从而提高性能?键盘打开时有点滞后。如果您想使用自定义布局,那么我将创建键盘
活动
,并按照我的建议重新使用,或者您可以创建一个片段对话框,可能会保存
布局
。在不知道更多的情况下,我不确定滞后是什么原因,但这不会给你带来问题。