我正在观察wrt传递可序列化数据作为intent extra的行为是非常奇怪的,我只想澄清是否有一些我不会错过的东西.
所以我试图做的是在ActivtyA
我LinkedList
为intent
我开始下一个活动而创建一个实例- ActivityB
.
LinkedList<Item> items = (some operation);
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra(AppConstants.KEY_ITEMS, items);
Run Code Online (Sandbox Code Playgroud)
在onCreate
中ActivityB
,我试图获取LinkedList
额外如下-
LinkedList<Item> items = (LinkedList<Item>) getIntent()
.getSerializableExtra(AppConstants.KEY_ITEMS);
Run Code Online (Sandbox Code Playgroud)
在运行这个时,我ClassCastException
在ActivityB
上面的一行中反复进入.基本上,例外说我收到了ArrayList
.一旦我改变了上面的代码来接收一个代码ArrayList
,一切都运行得很好.
现在我不能从现有文档中找出这是否是Android传递可序列化List实现时的预期行为.或者,或许,我正在做的事情存在根本性的错误.
谢谢.
在仔细研究了与使用Proguard进行混淆的问题相关的各种问题之后,我已经到了我觉得自己可能是唯一一个遇到这个问题的人.因此,帖子.
我有一个相当标准的Android应用程序,它使用基于JSON的REST调用来交换数据.我利用Jackson
库来解析JSON数据.一切都运行得很完美,直到我们决定使用Proguard为我们的发布版本加入混淆.在整理出回调相关问题的世界之后,我终于遇到了与杰克逊图书馆相关的问题.
基本上,线ObjectMapper om = new ObjectMapper()
- 只是不起作用!我在该行继续收到以下错误:
Caused by: java.lang.ExceptionInInitializerError
at org.codehaus.jackson.map.ObjectMapper.<clinit>(Unknown Source)
... 8 more
Caused by: java.lang.NullPointerException
at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<init>(Unknown Source)
at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<clinit>(Unknown Source)
... 9 more
Run Code Online (Sandbox Code Playgroud)
在阅读了许多与包括外部库相关的其他帖子之后,让proguard忽略杰克逊库类,打开和关闭优化以及缩小标志,我现在只是无能为力.
proguard.cfg
为了杰克逊的缘故,我在文件中包含了各种各样的东西-
-dontskipnonpubliclibraryclassmembers
-dontoptimize
-dontshrink
-libraryjars xtraLibs/joda-time-1.6.2.jar;xtraLibs/xml-apis.jar;xtraLibs/jsr311-api-0.8.jar;xtraLibs/stax2-api-3.0.0.jar;xtraLibs/httpmime-4.0.1.jar
Run Code Online (Sandbox Code Playgroud)
其中,我已经切换了dontoptimize
和dontshrink
旗帜.但是,结果总是一样的.
在我试图解决这个问题的所有时间里,我对Proguard图书馆的努力感到惊讶和敬畏.只是当事情不起作用时,它们会有点混淆.
Proguard版本 - 4.6
当我碰到这个不寻常的问题时,我刚刚开始在我的应用程序中实现对App Links的支持.
按照Android Studio应用链接工具中的步骤,我很快就能够进行必要的更改.但是,当我开始验证数字资产链接文件与我的网站的关联时,我收到了一个错误.
最初,我认为访问链接可能有一些错误.我尝试使用多个浏览器访问该链接,并且没有错误.
当我环顾四周寻找类似问题的人时,我发现了这篇文章.我试图关联的网站也使用了LetsEncrypt生成的SSL证书.所以,我尝试了另一个使用LetsEncrypt SSL的网站 - 结果相同.然后我使用了一个使用RapidSSL生成的SSL和宾果游戏的网站 - 它有效!
我不确定App Links团队是否注意到了这一点.但任何人都可以帮忙得到答案吗?
谢谢!
虽然我无法真正想到这种场景的实际用例,但我纯粹打算将其作为一个好奇心驱动的问题.
我理解servlet容器保存在servlet创建的所有实例上,并将请求线程委托给这些实例.保持这些实例的管理也是有意义的,以避免不必要的调用来改变容器范围之外的servlet实例的生命周期.
但是真的没有办法访问servlet实例吗?
我一直试图了解弹簧安全性已经有一段时间了,除了logout
方面之外,我已经解决了大部分问题.通过关于SO的其他问题,我觉得他们中的大多数都面临与会话无关的问题.
另一方面,我面临着各种各样的麻烦.我的安全XML文件配置如下:
<http path-type="ant" auto-config="false" use-expressions="true"
access-denied-page="/?login_error=2">
<intercept-url pattern="/web/open/**" access="permitAll" />
<intercept-url pattern="/web/**" access="isAuthenticated()" />
<form-login login-processing-url="/static/j_spring_security_check"
default-target-url="/web/base/view" always-use-default-target="true"
login-page="/" authentication-failure-url="/?login_error=1" />
<logout logout-url="/static/j_spring_security_logout"
invalidate-session="true" logout-success-url="/" />
</http>
Run Code Online (Sandbox Code Playgroud)
在我web.xml
已经映射login controller
到上下文根[使用welcome-file
列表],并且还具有所需的springSecurityFilterChain
设置.现在登录操作运行完美.目标JSP有一个注销链接:
<a href="<c:url value="/static/j_spring_security_logout"/>">Logout</a>
Run Code Online (Sandbox Code Playgroud)
但是,每当我点击退出链接时,我都会感到非常可怕NullPointerException
.如果我在这里犯了一些明显的错误,有人能告诉我吗?
异常堆栈:
java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:334)
at org.apache.tomcat.util.http.Parameters.getParameterValues(Parameters.java:116)
at org.apache.tomcat.util.http.Parameters.getParameter(Parameters.java:127)
at org.apache.catalina.connector.Request.getParameter(Request.java:1133)
at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:384)
at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:140)
at org.springframework.security.web.authentication.AbstractAuthenticationTargetUrlRequestHandler.determineTargetUrl(AbstractAuthenticationTargetUrlRequestHandler.java:86)
at org.springframework.security.web.authentication.AbstractAuthenticationTargetUrlRequestHandler.handle(AbstractAuthenticationTargetUrlRequestHandler.java:67)
at org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler.onLogoutSuccess(SimpleUrlLogoutSuccessHandler.java:28)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
Run Code Online (Sandbox Code Playgroud)
感谢您抽出宝贵的时间.
最近我有机会构建一个新的Web应用程序,并考虑尝试Angular以便对它有一个很好的理解.所以是的,我对这个框架还是比较陌生的.
在了解了框架的细微差别之后,我发现它非常容易使用.关于我的经验的一切都很棒,直到用户开始报告应用程序的完全滞后性能.
应用程序非常简单 - 它有2个屏幕.一个显示交易列表,另一个用户可以添加/编辑交易信息 - 这个第二页是一个简单的表单,期望用户输入交易相关信息.它看起来像这样:
概述的部分使用ng-repeat
.零售商列表有大约530个条目,而品牌列表有大约400个条目.
经过一些分析后,我发现访问第二个窗体屏幕会继续增加浏览器的内存消耗.第一个屏幕没有任何这样的效果.我只是在第一个屏幕和第二个窗体屏幕之间切换,发现每次加载这个屏幕时,内存消耗量会飙升50-75 MB.最终,浏览器会冻结.以下是内存配置文件的外观:
正如您所看到的,消耗量持续上升,并且没有任何GC的迹象!节点计数和内存跟踪中的每个峰值对应于对第二个基于表单的屏幕的访问.
现在我已经检查了很多关于角度和内存消耗的问题,但是他们每个人都提到在$scope
加载新视图时会删除任何视图.该DOM节点数量当然并不表示我这样一件事:/
我还遇到了两个与使用相关的要点ng-repeat
:
ng-repeat
指令中调用任何函数.ng-model
在ng-repeat
指令中没有使用双向绑定.我在第二个屏幕中避免了这两个,然而,内存消耗正在通过屋顶.
我的问题可能似乎是另一个与角度有关的记忆相关问题,但我真的试图在此处得到某种关闭并且没有找到一个.
非常感谢任何有关这方面的帮助,因为我决定在门户的其余部分使用角度进展取决于解决这个问题.
谢谢阅读!
根据Ilan
我的建议,让我补充一点,我使用2个插件来渲染下拉列表和实现日期选择器.
对于下拉列表,我正在使用Bootstrap-select和日期选择器,我正在使用Bootstrap-datepicker.
为了使bootstrap-select正常工作,我必须编写一个自定义指令,该指令在$last
事件中触发广播ng-repeat
.它看起来像这样:
.directive('onFinishRender', function($timeout) {
return {
restrict : 'A',
link : function(scope, element, attr) {
if (scope.$last === true) {
$timeout(function() {
scope.$emit('ngRepeatFinished');
});
}
}
};
});
Run Code Online (Sandbox Code Playgroud)
然后在控制器中,我依靠这个事件来调用下拉插件的渲染:
$scope.$on('ngRepeatFinished', function(ngRepeatFinishedEvent) …
Run Code Online (Sandbox Code Playgroud) 我最近更新我的Android项目的gradle这个插件2.1.0
的2.1.0-alpha4
.但现在我看到我的所有构建都失败了,如下所示:
Error:Execution failed for task ':App:compileUpdemoDebugJavaWithJavac'.
> Could not expand ZIP '/Users/admin/work/app/libs/lib-android-0.11.0.jar'.
Run Code Online (Sandbox Code Playgroud)
如果我将gradle插件恢复到以前的2.1.0-alpha4
版本,请设置环境变量ANDROID_DAILY_OVERRIDE
然后构建我的项目 - 一切正常.
还有其他人遇到过这个问题吗?我相信这与最新的插件有关,因此,人们可能会开始偶然发现这个问题.
任何可能的解决方 (我知道一些解决方法,比如提取JAR并让gradle跳过JAR提取过程,但这听起来不值得付出努力!)
我一直在努力让Bootstrap 3的网格布局系统与IE8配合良好,但它只是不起作用.我不需要响应式布局.
为了绝对肯定我没有在我创建的HTML文件中引入一些随机错误,我继续下载了Bootstrap 3的新副本.在提取内容后,我打开了示例网格HTML文件(在/中示例/网格文件夹),即使在官方发行版中,网格也会叠加在一起,而不是跨越一排!
但有些奇怪的是,当我浏览IE8上的在线文档的内联表单部分时,网格布局似乎工作得很好.
很长一段时间,只要应用程序运行,我就认为静态[实例]变量存在是幸福的.然而,令我沮丧的是,我惊慌失措,我觉得这不是真的.
仅仅测试,我创建了一个静态的字符串列表,并在我的主activity
类中覆盖了onDestroy
打印消息的方法,以验证应用程序退出.在onCreate
方法中我只需添加一个新的string
,并打印列表的内容.我发现的是列表的大小不断增加,之前添加的所有字符串值仍然存在.
我已经阅读了[甚至在这里的SO],只要应用程序存在实例变量,但我担心它并非如此.
更确切地说,我在使用Facebook SDK for Android时意识到了这个问题.我已经看到,班级AuthListener
中听众列表中的实例SessionEvents
随着时间的推移不断增加.因此,无论何时启动应用程序并且用户使用FB登录,侦听器方法都会被触发,因为类中存在实例SessionEvents
.
有人曾经观察到这一点,并且有一些重大错误我正在致力于理解android是如何工作的吗?
是什么赋予了?
谢谢阅读!
[ 更新 ]
我站在纠正BalusC
和rdineiu
.我真的不想在这里创建关于实例和类变量的混淆.唉,我急忙发布我的问题,我犯了一个我不想做的错误.我很清楚static
和instance
变量之间的区别.我只是想编写class
变量,并不能完全弄清楚将静态变量称为instance
变量的过程.
但是,我的问题仍然存在.
@MisterSquonk - 不,我不会在这里混淆我的Activity
目的何时以及应用程序何时被销毁.这是我在样本上尝试的内容 - 我只有一个Activity
用作样本Main
.当我按下后退按钮时Activity
,我假设Activity
从堆栈中删除了应用程序并且应用程序也被破坏了.我已启动任务管理器以验证我的应用程序不再运行.
几个月前我开始学习Python - 并立即面对这个问题.那时我做出了有意识的决定继续w/2.x [确切地说是2.7.1],因为我将参与一个基于该版本的项目.
随着时间的推移,我遇到过很多次出现的行,例如"3.x中将不再支持此功能",或者"这将改变",或具有类似效果的某些行.我也开始欣赏大量的工具包/库,它允许我编写各种组件.但是,这些工具包/库中有相当一部分带有免责声明,它只支持<3.x版本[当然,其中大多数还在积极处理移植到版本3.x]
在这一点上,当我可以,充其量,认为自己是一个新手 - 我应该继续w/2.7还是想继续前进到3.x?毕竟,作为一名程序员,通常最好了解最新的事情而不是落后 - 即使这只是一个版本的问题!
是否有可能编写一个类,以便其他程序员无法获取类的实例上的锁?
锁定滥用,如果有这样的术语,可能是一个严重的杀手.遗憾的是,程序员在提供线程安全代码和有限的并发知识的灾难性力量之间徘徊,即使在他们调用实际上不需要阻止实例资源的操作时,也会采用锁定实例的方法造成严重破坏.
android ×5
java ×4
angularjs ×1
applinks ×1
concurrency ×1
jackson ×1
lets-encrypt ×1
memory ×1
obfuscation ×1
proguard ×1
python ×1
python-3.x ×1
servlets ×1
spring ×1
static ×1