-XX:+HeapDumpOnOutOfMemoryError
每当Java进程用完堆时,sun JVM都支持转储堆的选项.
在Android上是否有类似的选项可以在OutOfMemoryException上创建一个Android应用程序转储堆?手动使用DDMS时,可能很难尝试正确计时.
在Ice Cream Sandwich中,当有一个包含EditText的Activity时,即使用户离开Activity,EditText也会保留Activity的Context.为了证明这一点,我创建了TestLeakActivity,它分配了一个大字节数组.由于Activity的Context不会被垃圾收集,因此字节数组会在堆上累积,最终导致OutOfMemoryError.您可以使用DDMS堆工具观察堆增长,并且可以通过查看Eclipse MAT中的HPROF文件来跟踪对EditText类的未完成引用.要创建内存泄漏,请进入LaunchActivity,然后继续启动并退出TestLeakActivity.
LaunchActivity.java
package com.example.testleakproject; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class LaunchActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Start TestLeakActivity"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(LaunchActivity.this, TestLeakActivity.class); startActivity(intent); } }); ViewGroup container = ((ViewGroup) findViewById(android.R.id.content)); container.addView(button); } }
TestLeakActivity.java
package com.example.testleakproject; import android.app.Activity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.EditText; …
我有多个消费者线程在等待CountDownLatch
1的大小使用await()
.我有一个生产者线程,countDown()
当它成功完成时调用.
当没有错误时,这很有用.
但是,如果生产者检测到错误,我希望它能够将错误发送给消费者线程.理想情况下,我可以让生产者调用类似的东西abortCountDown()
,让所有的消费者都收到InterruptedException或其他一些异常.我不想打电话countDown()
,因为这需要我的所有消费者线程在他们打电话之后再做一次手动检查以获得成功await()
.我宁愿他们只是收到一个异常,他们已经知道如何处理.
我知道没有中止设施CountDownLatch
.是否有另一个同步原语,我可以很容易地适应,有效地创建一个CountDownLatch
支持中止倒计时?
看来,如果在手机屏幕被锁定时活动位于前台,广播事件和/或唤醒锁将导致该活动的onResume被调用,无论它们是否适用于您的应用.即使您没有以任何方式与手机互动,也会发生这种情况.不要解锁它,不要触摸它,不要做任何事情,并且在没有相应的onPause的情况下一遍又一遍地调用你的onResume.
我们注意到了这一点,因为我们在onResume上记录了一个跟踪事件,我们注意到有些设备正在获取这些onResume事件的TON.我们能够重新发现并注意到每次任何应用程序似乎都收到了意图(例如SugarSync,Google Voice或我们自己的应用程序中的被动位置监听器)时就会发生这种情况.
我们在运行ICS的Galaxy Nexus和Galaxy S3上注意到了这一点.有趣的是,我们无法在Jelly Bean上重现这个问题.
任何人都有指向这里可能发生的事情的指示?
React Native的ListView有一个名为RefreshControl的内置pull-to-refresh控件.它非常易于使用.
我想自定义控件的外观和感觉,以使用不同的视觉设计,例如使用材料设计进度指示器.
如何在React Native中自定义RefreshControl的外观?
我有一个ArrayAdapter包裹自定义对象的ArrayList.我想为该适配器编写一个自定义过滤器,这样当我调用getListAdapter().getFilter().filter("abc")
列表时,将通过"abc"的任意转换过滤.
我想我会尝试覆盖ArrayAdapter.getFilter()
,但这需要我重新实现私有ArrayAdapter.ArrayFilter
,这需要访问一堆ArrayAdapter的私有实例.
最简单的方法是什么?
我正在尝试将具有透明背景的徽标上传到Android市场.出于某种原因,我的png正在被市场转变,以消除透明度.
我的设计师正在尽力遵循https://market.android.com/support/bin/answer.py?answer=1078870中的说明,但我们都无法弄清楚出了什么问题.据我们所知,他在png中做alpha,但看起来并不正确.
这是png:
以下是市场上的情况:
这似乎是市场上普遍存在的问题,尽管有些应用已经成功实现了这一目标.我们做错了什么?
我有一个github项目,我正在用travis构建. https://travis-ci.org/emmby/greenDAO/branches
我希望travis在该项目中构建大多数分支,但是我希望排除其中一个特别的分支.
所以我.travis.yml
在我的master
分支上添加了以下内容:
branches:
except:
- mvn-repo
Run Code Online (Sandbox Code Playgroud)
但是,这并没有禁用分支的构建.所以阅读文档,我发现了这个说明:
请注意,目前(由于历史原因),.travis.yml需要出现在项目的所有活动分支上.
所以,我继续.travis.yml
在mvn-repo
分支中创建了一个包含相同branches
部分的文件.然而,特拉维斯仍然坚持建立和失败我的mvn-repo
分支机构.
为什么travis试图建立一个我标记为排除的分支?
我在笔记本电脑上做了很多开发,我使用各种Android模拟器来完成它.运行时,仿真器经常占用大量CPU,因此显着降低了笔记本电脑的电池寿命.
有没有办法暂时停止模拟器,或至少关闭任何消耗所有不必要的CPU的东西?
我知道使用sdk r9以及后来我可以对模拟器进行快照并快速退出/重新启动它,但是我希望我的工作流程比这更具侵略性.
我有两个几乎相同的配置文件.我不想复制每个配置中的配置,而是希望一个配置文件从另一个配置文件"继承",但我没有看到使用maven 3执行此操作的明显方法.
在maven中是否可以进行配置文件继承?
android ×6
alpha ×1
android-4.0-ice-cream-sandwich ×1
concurrency ×1
dump ×1
filter ×1
github ×1
google-play ×1
hprof ×1
java ×1
maven ×1
memory-leaks ×1
png ×1
react-native ×1
travis-ci ×1