小编jmh*_*end的帖子

使用SQLite Trigger更新"LastModified"字段

这可能更像是一个设计问题,但是这里有.我正在编写一个Android应用程序,该应用程序使用本地SQLite数据库(具有多个表),并且每隔一段时间就与MySQL数据库同步.我只想更新数据库中的修改行.为此,我在last_modified每行添加一列" ",表示添加/更新/替换/等行的时间.

我是数据库操作的新手,但我已经看到触发器可能是最好的方法.我有几个与Triggers,SQLite和Android相关的问题.

我已经阅读了这个链接:在使用SQLite更新current_timestamp它基本上说我正在使用正确的方法.我的问题是:

  1. 我应该把db.execSQL("CREATE TRIGGER...")声明放在哪里?在创建表之前或之后?
  2. 我可以为数据库中的每个表使用相同的Trigger吗?即,触发器是否可以自动检测哪个表和行正在更新/插入/替换/等.并通知设置该行的" last_modified"字段,还是必须为每个表创建一个单独的触发器?
  3. 由于我对数据库操作很陌生,您是否可以提供执行上述行为的示例Android Trigger语句,或者为示例提供资源?

或者如果触发器是一个坏主意,还有更好的选择吗?

谢谢.

sqlite android triggers

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

每次设置ImageView位图时都要避免使用onMeasure和onLayout

这是我的设置.我有一个ListView带有一些花哨的标题的自定义,它位于一个ViewPager.我正在维护一个已经下载并在本地存储的图像的内存缓存,就像任何自尊的开发人员一样.

我遇到的问题是,每当我使用我的方法调用setImageBitmap(Bitmap bm)时,使用缓存中的Bitmap,就会导致我的所有视图都出现.我查看了Android 源代码,发现了这个:ImageViewListViewgetView()onMeasure()ImageView

public void setImageDrawable(Drawable drawable) {
    if (mDrawable != drawable) {
        mResource = 0;
        mUri = null;

        int oldWidth = mDrawableWidth;
        int oldHeight = mDrawableHeight;

        updateDrawable(drawable);

        if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) {
            requestLayout();
        }
        invalidate();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以看到setImageDrawable(它被称为setImageBitmap)只要drawable具有与之前不同的尺寸,就会请求它的布局Drawable.问题是我ImageView的静态设置为60dp x 60dp,因此无论图像大小如何,其大小都不会改变.

当我滚动时,有没有办法可以不断重新测量布局?在onMeasureonLayout调用传播自己的方式了View树,所以我ListViewViewPager也越来越在列表中滚动的中间,这显然是导致严重的性能问题(〜100ms的UI跳转)测量.

性能很差,我需要纠正它.有人有任何解决方案?

谢谢.

android listview view imageview android-layout

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

获取 Android 日历事件的唯一 ID

我做了很多研究,但找不到如何访问 Android 日历事件的真正唯一 ID。我查询以下内容URI

Context.getContentResolver().query(Events.CONTENT_URI, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

Cursor在我的 Galaxy Nexus 上查看结果时,没有与iCalGUID我正在寻找的表单(见下文)相似的内容。但是,当在 HTC One S 上执行相同的查询时,我注意到 HTC 已将其iCalGUID作为额外的列字段包含在内,它返回的正是我正在寻找的 ID 类型。它看起来像这样:

9ced5c2c-6ed9-481f-9f69-9a064810ac0f
Run Code Online (Sandbox Code Playgroud)

iCalGUID不过,这个字段看起来不像是 Android SDK 标准,所以我无法在其他 Android 手机上获取此 ID。我的问题是,有什么方法可以以标准 Android 的方式获得这种类型的 ID?我现在的目标是 ICS,但希望将来能够灵活地将其扩展到以前的版本。

如果我应该使用其他类型的 ID,那也很好。注意:我不是在寻找Events._ID专栏。我需要我的 ID 在所有设备和所有类型Account(Google、Exchange、Hotmail 等)中都是唯一的

谢谢!

icalendar android android-calendar

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