小编And*_*yld的帖子

为什么removeOnGlobalLayoutListener会抛出NoSuchMethodError?

我有一些代码可以成功编译使用ViewTreeObserver#removeOnGlobalLayoutListener(...),当它运行时,此方法抛出NoSuchMethodError.为什么?

android

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

有没有办法检测用户何时更改了设备上的时钟时间?

有没有办法检测用户在Android中重置Android系统时钟的时间?

我正在设计一个应用程序,它使用系统时间来确定用户何时在特定时间某个地点,并且我不想在此时依赖网络可用性.显然,知道用户何时更改系统时钟是很好的,因此他们不能"作弊".

time android

37
推荐指数
4
解决办法
3万
查看次数

如果列为null,SQLiteCursor会做什么?

我想从SQLite查询返回的Cursor中获取一个整数,但我知道整数可能为null.不幸的是我找不到允许我检查这个的任何Cursor方法.

代码将是

mModifiedDate = cursor.getInt(cursor.getColumnIndex(MODIFIED_DATE));
Run Code Online (Sandbox Code Playgroud)

我希望有一个可能的空值,这实际上是出于各种原因所希望的 - 字段是指第二个表被修改的时间,第一个表可以在第二个表之前填充.不幸的是,Cursor的文档说,无论是抛出异常,还是返回错误值,还是其他行为都留给实现,而SQLiteCursor文档没有说明任何内容.

如果该字段为空,此代码将执行什么操作?有没有办法在调用getInt()之前检查这个?

sqlite android cursor

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

Android Honeycomb中的Bitmap#recycle()实际上做了什么?

我正在为Android Honeycomb编写一个内存密集型应用程序,并且尽可能地对recycle()未使用的Bitmaps 进行了非常小心的处理.实际上,这对于应用程序来说是必要的,因为Bitmaps不断地循环进出内存.但是,我刚刚实现onConfigurationChanged()Activity,因此(由于多种原因)我试图将内存释放例程放入其中onStop().

目前我的onStop()方法:

  • 设置一些Views来显示默认值Drawable;
  • 呼吁recycle()Bitmap以前使用的这些小号View秒;
  • nulls对Bitmaps的引用.

不幸的是,使用Eclipse内存分析器,它似乎对内存使用没有任何影响.

你可以想象,我已经做了很多努力,用一种名义上垃圾收集的语言来释放资源,我希望能有更多的效果.所以我的问题是:做recycle()什么?它是否实际上触发了垃圾收集,或者系统是否会保留在内存中 - 即使你调用System.gc()-until它感觉需要摆脱某些东西?

NB我知道Bitmaps实际上并没有被保存在常规堆中,但我认为调用recycle()足以确保它们被从本机堆中删除.

答案的一部分

我发现如果一个ImageView包含Bitmap已经被回收的Bitmap数据,那么数据仍会保留在内存中,直到setImageBitmap(null)被调用ImageView.甚至可能是这种情况,如果setImageResource(...)或被setImageDrawable(...)调用(它们是在一个相对较小的九个补丁中加载 - 但是,MAT分析显示这并没有删除Bitmap包含在私有成员中的大数据ImageView).简单地调用此函数onStop()已经从我们的应用程序堆中剔除了大约10MB.显然,这可能不适用于预装的Honeycomb版本的Android.

memory android bitmap recycle android-3.0-honeycomb

15
推荐指数
2
解决办法
3079
查看次数

获取应用内购买结算中使用的Google ID

我注意到设备可能同时登录了多个Google帐户.据我所知,在Honeycomb之前,有一个主要ID; 从Honeycomb上你可以简单地插入几个.我目前有两个ID登录到我的测试平板电脑.

从Google Play购买时,您可以选择用于购买的帐户.我想在我正在编写的应用程序中添加应用内结算功能,并且我想确保每个Google ID都可以在任何设备上购买,这意味着我需要知道首先使用哪个ID进行购买.这意味着我需要执行以下操作之一:

  1. 强制Google Play使用用户在我的应用中选择的其中一个Google ID;
  2. 检索Google Play用于购买的ID.

文档似乎是在假设只有一个购买者在一个设备上活动的情况下编写的.是否有可能做到这一点?

account android in-app-purchase accountmanager

15
推荐指数
1
解决办法
3891
查看次数

使用OnPageChangeListener同步两个ViewPagers

我正试图同步两个ViewPagers,因为在我之前显然有很多人,而且我已经达到了这个目标:

private ViewPager mNavPager;

private ViewPager mMainPager;

private final OnPageChangeListener mNavPagerListener = new OnPageChangeListener() {

    private boolean mNavDragging;
    private int mScrollPosition;

    @Override
    public void onPageSelected(int position) {
        mScrollPosition = position;
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        if(mNavDragging)
            mMainPager.scrollTo(positionOffsetPixels, 0);
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        switch(state) {
        case ViewPager.SCROLL_STATE_DRAGGING:
        case ViewPager.SCROLL_STATE_SETTLING:
            mNavDragging = true;
            break;
        case ViewPager.SCROLL_STATE_IDLE:
            mNavDragging = false;
            break;
        }
    }
};

private OnPageChangeListener mMainPagerListener = new OnPageChangeListener() {

    private …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

13
推荐指数
3
解决办法
6547
查看次数

什么可能导致StaleDataException而不是过早地调用cursor.close()?

我目前正在大量修改/重写一个Android应用程序,我看到一个非常偶然的崩溃沿着以下几行:一个CursorAdapter方法被调用,它调用AbstractWindowedCursor#checkPosition(),和:

02-20 15:03:18.180 E/AndroidRuntime(17143): android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method.
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139)
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.CursorWrapper.getLong(CursorWrapper.java:106)
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.widget.CursorAdapter.getItemId(CursorAdapter.java:220)
Run Code Online (Sandbox Code Playgroud)

麻烦的是,我们没有关闭任何Cursors.我们所有的Cursors都来自CursorLoaders而且又是由a产生的ContentProvider.我们要传递Cursor到每个相应的CursorAdapterLoaderCallbacks,我们正在注册Cursor中的通知ContentProvider,我们通知ContentResolver从各insert(...),delete(...)update(...)......总之我找不到任何理由为什么Cursor会在使用中关闭一段时间.

那么:a 的其他原因是 …

android staledataexception android-contentprovider android-loadermanager android-loader

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

如何从AttributeSet中可靠地获取颜色?

我想创建一个自定义类,当在Android XML文件中布局时,该类将颜色作为其属性之一.但是,颜色可以是资源,也可以是多种直接颜色规范之一(例如十六进制值).是否有一个简单的首选方法用于AttributeSet检索颜色,因为表示颜色的整数可以指代资源值或ARGB值?

xml parsing android colors

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

如何将Java HttpPost对象显示为字符串?

我正在HttpPostAndroid中创建一个对象,以便与客户端运行的服务器进行通信.不幸的是,服务器没有向我们提供非常有用的错误消息; 我希望将HttpPost对象的内容看作一个字符串,这样我就可以将它发送给我们的客户端,他可以将它与他期望的内容进行比较.

如何将HttpPost对象转换为一个字符串,反映它到达服务器时的外观?

java android http-post

6
推荐指数
1
解决办法
3944
查看次数

Toast.makeText(...).show()有时会错位

我正在使用Toast.makeText来显示对话框的结果并且有一个奇怪的问题:文本显示在应该保持它的框架上方,如下所示:

消息未与帧错位.请更好地对齐它.[ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ___ ]

我通常使用的代码看起来像

Toast bread = Toast.makeText(getContext(), R.string.message, Toast.LENGTH_LONG);
bread.show();
Run Code Online (Sandbox Code Playgroud)

从对话框.我听说不好的情况有时候会导致通货膨胀问题,但是getOwnerActivity()会返回null,所以就这样了.在任何情况下,我都认为getContext()会提供在构造时传递的上下文,无论如何都是活动.

有什么建议?

android alignment toast android-context

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