小编Mic*_*ł K的帖子

滚动ListView时使用大量GC(带支架图案)

这是一个类似的问题,这个,但解决方案不起作用.

问题是滚动ListView非常缓慢,这是因为有很多很多的GC.我使用holder pattern(视图缓存),如下面的代码所示:

public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.eventrow, parent, false);

        holder = new ViewHolder();

        holder.title = (TextView) convertView.findViewById(R.id.eventTitle);
        holder.place = (TextView) convertView.findViewById(R.id.eventPlace);

        convertView.setTag(holder);
    } else {
        // Get the ViewHolder back to get fast access to the TextView
        // and the ImageView.
        holder = (ViewHolder) convertView.getTag();
    }

    // Bind the data efficiently with the holder.
    holder.title.setText(((EventItem) getItem(position)).getTitle());
    holder.place.setText(((EventItem) getItem(position)).getPlace_name());

    return convertView;
} …
Run Code Online (Sandbox Code Playgroud)

android garbage-collection android-listview

13
推荐指数
1
解决办法
2354
查看次数

使用Jack时,Crashlytics不会编译

我尝试使用Android的新实验工具链(Jack和Jill),但如果无法编译:

Error:Could not determine the dependencies of task ':app:crashlyticsStoreDeobsXXX'.
> Task with path 'dexXXX' not found in project ':app'.
Run Code Online (Sandbox Code Playgroud)

我很确定这是由于J&J处于早期开发阶段,但是有人可以解释这里发生的事情并提供解决方法吗?

android crashlytics android-jack-and-jill

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

在ViewPager中引用片段

我在ViewPager中引用我的片段时遇到问题.我想这样做是因为从我的活动中我想要在指定位置刷新片段(例如当前显示的片段).

目前我有这样的事情:

public static class MyPagerAdapter extends FragmentPagerAdapter {

    private static final String TAG = "MyPagerAdapter";
    private static HashMap<Integer, EventListFragment> mPageReferenceMap = new HashMap<Integer, EventListFragment>();

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    @Override
    public Fragment getItem(int position) {
        Log.i(TAG, "getItem: "+position);
        int dateOffset = position-1;
        EventListFragment mFragment = EventListFragment.newInstance(dateOffset);
        mPageReferenceMap.put(position, mFragment);
        return mFragment;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        Log.i(TAG, "destroyItem: "+position);
        mPageReferenceMap.remove(position);
        super.destroyItem(container, position, object);
    }


    public …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

9
推荐指数
1
解决办法
6174
查看次数

动画时出现奇怪的错误(Adreno,GL)

我有两个奇怪的错误,当我为我的视图设置动画时(有一点NineOldAndroids的帮助).它很难调试,所以我还不确定,但我认为它可能是由v.setLayerType(View.LAYER_TYPE_HARDWARE, null);.并且有一些绘图问题与此日志一起出现,但它们并不一致.

这些是错误(在不同的活动中都会引起):

<gl_draw_error_checks:437>: Error: Unknown: 0x506

<qgl2DrvAPI_glStartTilingQCOM:162>: GL_INVALID_VALUE

两者都带有Tag Adreno200-ES20.看起来像是一个OpenGL问题,但我不知道是什么导致它以及如何摆脱它.有什么想法吗?

android opengl-es android-animation

9
推荐指数
1
解决办法
1026
查看次数

来自s3的gradle maven依赖的未解析引用

我尝试将库发布到私有S3 maven存储库.上传由密码保护,但是为了下载,该库是公开的.aar文件上传没有问题(以及pom/md5/sha1),我可以在我的S3存储桶中看到它,下载它甚至手动添加这个作为依赖项到我的项目.但是当我像这样加载这个依赖:

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "http://myrepo.com" }
}

//in the project's build.gradle
implementation 'com.mylib:mylib:0.1.1'
Run Code Online (Sandbox Code Playgroud)

......有一个问题.Gradle同步完成没有问题,看起来已经下载了aar,但它从未出现在Android Studio内的"外部库"部分,并且代码不可用(Unresolved reference: MyLib).

当然,我尝试重建,使缓存无效并将其应用于不同的项目.

任何想法如何使其工作?

这就是maven-publish代码的外观.

android.libraryVariants.all { variant ->

    if (variant.buildType.name == "release" && variant.flavorName == "prod") {

        variant.outputs.all { output ->

            publishing.publications.create(variant.name, MavenPublication) {

                artifact source: output.outputFile, classifier: output.name

                pom.withXml {
                    def dependencies = asNode().appendNode('dependencies')

                    configurations.getByName(variant.name + "CompileClasspath").allDependencies
                            .findAll { it instanceof ExternalDependency }
                            .each {
                        def dependency = dependencies.appendNode('dependency')

                        dependency.appendNode('groupId', it.group)
                        dependency.appendNode('artifactId', it.name)
                        dependency.appendNode('version', …
Run Code Online (Sandbox Code Playgroud)

android gradle maven maven-publish gradle-plugin

9
推荐指数
1
解决办法
314
查看次数

LoaderCallbacks作为静态内部类(处理返回不同数据类型的多个Loader)

我有一个使用两个装载机的活动.它们中的每一个都返回不同类型的数据.要从单个Loader获取数据,只需实现LoaderCallbacks<D>一个Activity即可.我想我可以实现LoaderCallbacks<Object>并检查对象的类型,然后决定它是哪两个LoaderCallbacks,但这对我来说似乎是一个黑客攻击(主要是因为这里没有类型安全).

所以我想到让LoaderCallbacks对象成为一个静态内部类,如下所示:

private static class geocoderLoaderCallbacks implements LoaderCallbacks<List<Address>>{

    @Override
    public Loader<List<Address>> onCreateLoader(int arg0, Bundle arg1) {
        GeocoderTask loader = new GeocoderTask(context, "");
        return loader;
    }

    @Override
    public void onLoadFinished(Loader<List<Address>> loader, List<Address> data) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onLoaderReset(Loader<List<Address>> loader) {
        // TODO Auto-generated method stub

    }


}
Run Code Online (Sandbox Code Playgroud)

然后使用lm.initLoader(0, null, geocoderLoaderCallbacks).

出现两个问题:是否可以,或者我是否应该坚持将LoaderCallbacks实施到Activity中?我如何安全地将上下文传递给onCreateLoader?我应该在geocoderLoaderCallbacks中创建一个构造函数并像这样传递上下文lm.initLoader(0, null, geocoderLoaderCallbacks(this))吗?

这里有一个类似的问题LoaderManager有多个加载器:如何获得正确的游标加载器,但它没有解释如何管理具有不同数据类型的两个加载器.

android

8
推荐指数
1
解决办法
4489
查看次数

ActionBarSherlock + Maps + Loaders = java.lang.NoClassDefFoundError

编辑:有关详细的操作方法,请查看我的答案.

我现在挣扎了两天,希望有人可以提供帮助.

我正在尝试将最新的ActionBarSherlock(4.0)与MapView一起使用.我知道片段存在问题,但我不需要它们.但我需要Loaders,看来,使用Loaders我也必须扩展FragmentActivity.没问题,我想,我们有来自Pete Doyle 的android-support-v4-googlemaps.正如许多SO线程和Google网上论坛所建议的,我使用android-support-v4-googlemaps JAR(实际上是android-support-v13-r7-googlemaps.jar)而不是android-support-v4.jar来构建ABS.然后我用它作为我项目的库.

现在,我希望以这种方式进行活动:

public class BananoutMapActivity extends SherlockFragmentActivity implements LoaderCallbacks<ArrayList<EventItem>>{

问题:

它编译,但抛出运行时错误: E/AndroidRuntime(29159): java.lang.NoClassDefFoundError: ndl.klimczak.bananout.BananoutMapActivity

我三重检查的事情:

  • ActionBarSherlock库项目和我的项目都针对Google API 4.0.3
  • 我有<uses-library android:name="com.google.android.maps" />,我在应用程序标签中有它.
  • 我在项目的构建路径中也有相同的android-support-v13-r7-googlemaps.jar
  • .BananoutMapActivity在我的清单中宣布过

有趣的是:

  • 当我在ICS模拟器上运行它时它会工作(错误出现在2.*模拟器和我的2.3.7设备上),在Honeycomb上,它很可能会工作,这是使用ACL的问题我猜

  • 当我删除implements LoaderCallbacks<ArrayList<EventItem>>它也有效的部分,但这样我就无法使用LoaderManager

为什么在NoClassDefFoundError错误以及如何让我的MapCapableSherlockEnabledFragmentActivity中的加载器工作?

android android-maps actionbarsherlock android-loadermanager

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

如果有足够的空间,请在布局中心查看

我有一个布局,需要将其中一个视图放在中心.这很简单.问题是我还有一些其他视图需要定位到屏幕顶部.

问题:如果有足够的空间,它看起来没问题,但是当屏幕太小时,顶部和中心元素重叠.

问题:如果屏幕很小,如何将"居中"元素按下?

原来的布局非常复杂,我准备了一个例子:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/theOneAtTheTop"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view."
    android:layout_alignParentTop="true"
    />


<TextView
    android:id="@+id/theOneInTheMiddlep"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Some long text which may overlap the upper view. Some long text which may overlap the upper view. "
    android:layout_centerInParent="true"
    />


</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是一个小模拟.中间的图片显示了它在小屏幕上的外观,并且两侧的图片显示了所需的情况.

android android-layout

8
推荐指数
1
解决办法
814
查看次数

无法在ConstraintLayout.Group中设置单个项目的可见性

我有这样的ConstraintLayout.Group定义:

    <android.support.constraint.Group
        android:id="@+id/someGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="
        textView1,
        textView2,
        button1" />
Run Code Online (Sandbox Code Playgroud)

我将此组的可见性从GONE更改为VISIBLE:

someGroup.visibility = VISIBLE
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过指定该组中某个视图的可见性来覆盖它时:

button1.visibility = GONE
Run Code Online (Sandbox Code Playgroud)

......它不起作用.我将此可见性记录到logcat,它说8 (GONE),但我仍然可以看到该视图.

任何想法可能会发生在这里?我试着打电话requestLayout,updatePreLayout在这个小组中,我尝试将可见性改变几次,可见,不可见然后消失.我甚至重建了整个项目,因为一些stackoverflow回答说它可能有助于ConstraintLayout中的可见性问题.我也尝试过版本1.1.3和2.2.0-alpha.没有任何效果.它总是可见的.

android android-layout android-constraintlayout

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

Google Play Billing 2.0 测试待处理交易和确认

我正在过渡到 Google Play Billing library v2.0.0,有两个主要的流程差异。一个是购买确认https://developer.android.com/google/play/billing/billing_library_overview#acknowledge另一个是处理未决交易https://developer.android.com/google/play/billing/billing_library_overview#pending

对于待处理的交易,文档指出

除了两张测试信用卡外,许可证测试人员还可以使用两种测试工具来延迟付款,几分钟后自动完成或取消

...但我只能使用两张普通的测试卡,没有延迟的。

还有:

对于许可证测试人员进行的购买,确认窗口较短。如果在五分钟内未得到确认,购买将被退还和撤销,而不是三天。

但是我仍然可以按月订阅 6 次 5 分钟的长续订,所以这是一种常规行为,而不是新行为。

当然,我调用enablePendingPurchases()了 init。

显然,我没有启用新流程,但这是为什么呢?

android google-play android-billing play-billing-library

7
推荐指数
0
解决办法
822
查看次数