小编phl*_*bas的帖子

简单的TextView.setText导致40%的CPU使用率

运行我的应用程序会导致我的手机上CPU使用率降低约40%:

final String position = String.format("%02d:%02d:%02d", time.getHours(), time.getMinutes(),
                time.getSeconds());
getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
         c.mTxtPosition.setText(position);
         ...
Run Code Online (Sandbox Code Playgroud)

通过注释掉setText方法,CPU使用率下降到~4%的预期水平.该方法每秒调用一次并刷新ImageViews,CustomViews ...而不会导致相同的负载过量.除了CPU使用率之外,dalvik通过调用setText()不断报告大约10-1000个对象的垃圾收集.

创建这样的跟踪文件:

Debug.startMethodTracing("setText");
c.mTxtPosition.setText(position);
Debug.stopMethodTracing();
Run Code Online (Sandbox Code Playgroud)

traceview按以下各自的CPU%列出以下方法作为前5名:

  • ViewParent.invalidateChildInParent(16%)
  • View.requestLayout(11%)
  • ViewGroup.invalidateChild(9%)
  • TextView.setText(7%)
  • 顶层(6%)

有人对此有解释吗?

android cpu-usage

25
推荐指数
1
解决办法
5755
查看次数

IllegalStateException - 片段支持库

我的应用程序在一些用户设备上连续崩溃,但在Activity onStart方法中存在以下异常:

Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:541)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:525)
at android.support.v4.app.DialogFragment.show(DialogFragment.java:123) 
Run Code Online (Sandbox Code Playgroud)

我无法在我的模拟器中本地重现此错误.我在stackoverflow上找到了一些关于这个问题的问题: 这里这里

我已经尝试了建议的解决方案,即不允许onSaveInstance中的空包在片段或活动中.

但问题仍然存在.这是我遇到的唯一一个Crash报告,我不断得到它.

有没有人有工作的解决方案?

android illegalstateexception

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

片段已添加.支持lib

自从我升级我的应用程序以使用支持lib rev.11并针对SDK 4.2编译我收到以下错误

java.lang.IllegalStateException: Fragment already added: i{4079e598 #2 id=0x1020002 i}
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1159)
    at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:729)
    at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1493)
    at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:477)
    at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:174)
Run Code Online (Sandbox Code Playgroud)

我已经阅读了有关stackoverflow的类似问题.他们中的一些人建议避免使用我不使用的替换方法.导致回滚崩溃的事务如下所示:

ft.remove(oldFrag).add(newFrag).addToBackStack(null).commit()
Run Code Online (Sandbox Code Playgroud)

其他评论说如果您使用的片段转换在用户再次按下之前无法完成,则可能会出现这种情况.由于我确实在给定的片段上使用过渡动画,这可能是原因.但是,删除的过渡并不是一个选择,因为这仅仅发生在运行2.3.x版本的手机和错误是通过升级到LIB 11和SDK 4.2,我希望谷歌会在下一版本中修正它推出.

有任何类似的问题,有关是否计划在4.2.1中修复或支持r12的信息,或建议我可以做些什么来规避错误?

android fragment android-support-library

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

IndexMissingException - 带有elasticsearch的django haystack

我正在尝试使用elasticsearch后端设置haystack搜索我收到以下错误:

./manage.py rebuild_index
 ...
Failed to clear Elasticsearch index: (404, u'IndexMissingException[[haystack] missing]')
Run Code Online (Sandbox Code Playgroud)

但是,以下命令有效:

curl -XPUT http://33.33.33.1:9200/haystack
{"ok":true,"acknowledged":true}
curl -XGET http://33.33.33.1:9200/haystack/test/something
{"_index":"haystack","_type":"test","_id":"something","exists":false}
Run Code Online (Sandbox Code Playgroud)

现在,跑完了

./manage.py rebuild_index
...
Failed to clear Elasticsearch index: (404, u'IndexMissingException[[haystack] missing]')
Run Code Online (Sandbox Code Playgroud)

再次,突然现在按预期工作的命令会出现以下错误:

curl -XGET http://33.33.33.1:9200/haystack/test/something
{"error":"IndexMissingException[[haystack] missing]","status":404}
Run Code Online (Sandbox Code Playgroud)

正如其他地方所建议的那样,我也试过:

from django.core import management
from haystack import connections
backend = connections['default'].get_backend()
backend.setup_complete = False
backend.existing_mapping = None
management.call_command('rebuild_index', interactive=False, verbosity=0)
Run Code Online (Sandbox Code Playgroud)

结果相同:

{"error":"IndexMissingException[[haystack] missing]","status":404}
Run Code Online (Sandbox Code Playgroud)

我正在运行Django 1.4.2,来自github的django-haystack HEAD和来自github的pyelasticsearch HEAD

配置:

HAYSTACK_CONNECTIONS = {
  'default': {
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://33.33.33.1:9200/',
    'INDEX_NAME': 'haystack',
  }, …
Run Code Online (Sandbox Code Playgroud)

django django-haystack elasticsearch

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

Spring Boot Security - Thymeleaf sec:authorize-url无效

默认情况下,sec:authorize-url标记不能与Spring启动安全性一起使用:

git clone https://github.com/spring-projects/spring-boot
Run Code Online (Sandbox Code Playgroud)

项目spring-boot-sample-web-method-security:

添加依赖项

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity3</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

调整样本中的控制器:

@RequestMapping("/")
public String home(Map<String, Object> model) {
model.put("message", "Hello World");
model.put("title", "Hello Home");
model.put("date", new Date());
return "home";
}

@RequestMapping("/admin/foo")
public String home2(Map<String, Object> model) {
    model.put("message", "Hello World");
    model.put("title", "Hello Home");
    model.put("date", new Date());
    return "home";
}
Run Code Online (Sandbox Code Playgroud)

添加与应用程序安全性匹配的URL:

http.authorizeRequests().antMatchers("/login").permitAll()
    .antMatchers("/admin/**").hasRole("ADMIN")
...
Run Code Online (Sandbox Code Playgroud)

在home.html中添加testcode

<div sec:authorize="hasRole('ROLE_ADMIN')">
    has role admin
 </div>
 <div sec:authorize-url="/admin/foo">
    can see /admin
 </div>
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序并登录时,无论我是否可以实际访问该URL,我都会看到"可以看到/管理员"部分.角色评估本身按预期工作,url权限本身也是如此(当我尝试使用ROLE_USER访问它时,我得到403).

如果我向web安全配置添加一个dummy privilegeEvaluator,它只是为每个请求返回false,则div将正确消失.

我在这里错过了什么吗?这是预期的行为,我需要定义什么才能使authorize-url以与使用xml配置安全性时相同的方式工作?

更新:基本身份验证

此问题与SpringBootWebSecurityConfiguration中的基本身份验证及其自动配置相关联:

在 …

spring spring-security thymeleaf spring-boot spring-java-config

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