小编cn1*_*n1h的帖子

关于android launchmode"singleTask"

我在网上阅读了android开发者指南和一些文章,我仍然对此感到困惑singleTask launchmode.让我们举一个例子:

用户启动App1,android启动一项新任务.假设App1按以下顺序创建活动:

ActivityA -> ActivityB -> ActivityC
Run Code Online (Sandbox Code Playgroud)

这就是task1的样子.

然后用户点击home buttom并选择启动App2,这样task1进入后台并且android启动一个新任务:task2,用户执行的操作:

ActivityD -> ActivityE
Run Code Online (Sandbox Code Playgroud)

现在让我们说ActivityE尝试启动ActivityB,并ActivityB拥有launchmode singleTask.

我的理解是task1再次来到前端,task2进入后台.而task1现在看起来像这样:

ActivityA -> ActivityB
Run Code Online (Sandbox Code Playgroud)

意思是:

  1. ActivityC将从任务1被移除并ActivityB变得顶端活动.

  2. 如果用户现在点击"返回"按钮,他将来到ActivityAtask1而不是返回ActivityEtask2

我对吗?

谢谢

android launchmode android-activity

29
推荐指数
2
解决办法
3万
查看次数

关于Android用户界面设计的书籍

在我看来,一个漂亮的用户界面对应用程序的成功至关重要.

所以现在我正在搜索一本关于Android的用户界面设计(最好)的书,它不应该是技术实现,比如如何创建菜单或使用不同的布局.它应该更多地涉及设计概念.

官方文档:http://developer.android.com/design/index.html很棒,但太短了.我还找到了一本关于这个主题的书,但直到2013年才发表.

所以关于这个主题的书籍的任何建议都会感激不尽.

user-interface android android-layout

14
推荐指数
1
解决办法
1万
查看次数

Java为高并发情况限制了非阻塞缓冲区

基本上我需要一个数据结构来存储服务器端的临时聊天消息.它应该是:

  • 有界:因为我不需要存储太多消息,客户端将发送请求以每秒获取新消息.我认为绑定大小应该是最大值.在一秒钟内挂载并发请求.当缓冲区已满时,将删除旧消息.

  • 适合高并发访问:我不想使用像Collections.synchronizedXXXX这样的数据结构,因为在迭代期间,如果其他线程更改了数据结构,例如添加了一条消息,它将抛出异常,所以我必须锁定整个数据结构,实际上我并不关心客户端请求是否可以获得最后插入的消息,因为它们将在一秒钟后发送新请求,另一方面写操作应该永远不会延迟.包java.util.concurrency下的类似乎是解决方案,但是......

  • 非阻塞:LinkedBlockingQueue,ArrayBlockingQueue它们可以有界并且在迭代期间不会抛出异常,但它们都是阻塞队列.当队列已满时,我想将新元素添加到尾部并从头部删除旧元素而不是阻塞它并等待某人删除标题.

所以我的问题是第三个库有什么好的实现吗?比如谷歌番石榴?或者您可能更了解在服务器上存储临时聊天消息?

非常感谢你!

java collections concurrency buffer guava

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

Java避免竞争条件没有同步/锁定

为了避免竞争条件,我们可以在共享变量上同步write和access方法,将这些变量锁定到其他线程.

我的问题是,是否有其他(更好的)方法来避免竞争条件?锁定会使程序变慢.

我发现的是:

  • 如果只有一个共享变量,则使用Atomic类.
  • 对多共享变量使用不可变容器,并使用volatile声明此容器对象.(我从"Java Concurrency in Practice"一书中找到了这个方法)

我不确定它们的执行速度是否比同步方式更快,还有其他更好的方法吗?

谢谢

java concurrency multithreading synchronized race-condition

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

设计一个基于插件的java应用程序

我正在尝试制作一个基于插件的应用程序,这意味着除了基本框架之外,还应该使用插件样式添加其他功能。

我认为这种系统的主要问题是如何在运行时加载新插件。我不想在安装新插件时重新编译整个项目。就像Eclipse一样,全新安装插件后,用户只需重启即可。所以我的第一个想法是使用 java 反射在运行时加载类。可能有一些插件配置文件,系统读取它们并通过反射加载插件类。也许我也可以使用 spring 框架,因为它的控制反转正好符合我的要求。

我正在研究的另一个想法是使用 ejb 容器。当插件是 ejb 时,我可以将它们打包成 jar 并将它们部署在 ejb 容器中,然后我可以使用 jndi 访问它们。但它只在插件是 ejbs 时有效。

反正我是系统设计的菜鸟。所以我发布了这个话题,想听听你的意见。顺便提一句。有什么关于系统设计的好书要推荐吗?

非常感谢!

java plugins spring system-design

5
推荐指数
1
解决办法
657
查看次数

HttpSession数据存储在哪里?

HttpSession 是建立在cookie和url重写之上的高级界面,这意味着只有一个会话ID存储在客户端,与之关联的数据存储在服务器端。

哪里是HttpSession数据实际存储在服务器端?在JVM内存中还是其他地方?我可以更改存储位置,例如将其保存到内存数据库中吗?

如果它不在数据库中,那么当许多客户端同时处理同一会话数据时,是否存在并发问题?

session servlets store httpsession in-memory-database

5
推荐指数
1
解决办法
6995
查看次数

用户在Chrome中进行跨域通信

Chrome有自己的Greasemonkey,无论如何它有很多限制.其中之一是它的xmlhttprequest不支持Cross-Origin.那么有什么办法让它有效吗?

谢谢

greasemonkey google-chrome xmlhttprequest cross-domain userscripts

5
推荐指数
1
解决办法
1076
查看次数

dijit.form.filteringselect动态更改选项

我有一个dijit.form.FilteringSelect组件,我想动态更改选项.但我从dijit.form.FilteringSelect获取商店的商店属性; 商店里没有setter功能.(它可能是一个dojo.store.Reader)

那么我该如何改变选项dijit.form.FilteringSelect呢?我应该直接用DOM更改吗?有没有办法更新后面的商店dijit.form.FilteringSelect

javascript dojo

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

GWT事件预览与事件处理程序

我的问题是,GWT中的事件预览和事件处理程序之间有什么不同.

还有一个boolean onEventPreview(Event event)用于事件预览的回调函数和一个回调函数void onBrowserEvent(Event event).它们非常相似,所以它们之间有什么不同?特别是当事件处理程序工作完美时,我应该何时使用事件预览?

谢谢

events gwt handler preview

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

使用Path而不是FileSet的Ant Copy任务

我正在使用Ant 1.7,想要从不同路径复制文件(它们没有关系,所以我不能使用include选择器将它们从根目录中过滤掉)。我尝试使用而不是<path>内部,因为使用i可以指定不可能的多路径。我的蚂蚁脚本看起来像这样,但是不起作用。<copy><fileset><path><fileset>

<target name="copytest">
    <!-- copy all files in test1 and test2 into test3 -->
    <copy todir="E:/test3">
        <path>
            <pathelement path="C:/test1;D:/test2"></pathelement>
        </path>
    </copy>
</target>
Run Code Online (Sandbox Code Playgroud)

有人知道如何使用<path>内部<copy>吗?也许有人建议如何在没有选择器的情况下从不同来源复制文件?

顺便说一句,我不想​​对源目录进行硬编码,它们将从适当的文件中读取,因此不应考虑<fileset>在内部编写多重目录<copy>

提前致谢!

ant copy path

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