小编Pra*_*iya的帖子

使用 SQLCipher 加密后无法压缩 Android SQLite 数据库

我随我的应用程序一起提供了一个只读数据库,将它包含在 Assets/Database 目录中。所有数据都是事先预填充的。

SQLCipher数据库集成并加密后,我注意到 APK 大小从25MB膨胀到 150MB。原因是SQLite db 文件不再被压缩。

Android Studio 通常会压缩资源,但在 DB 文件被加密后,压缩文件似乎没有效果。我尝试在外面用常规的 Zip 和 7Zip 测试它并没有什么区别,压缩文件的大小与原始文件相同。

未加密的数据库大约 130MB,压缩后仅占用 18MB,因为其中大部分是文本和字符串压缩得很好。压缩加密的 db 文件在大小上没有区别。

通过服务器填充不是一个可行的选择,因为由于记录的数量,它需要永远。从服务器下载完整加密的 DB 文件是下一个选项,但对于 140MB 的文件,它仍然会太慢。

需要找到一种方法来随应用程序一起发送加密数据库,同时仍将应用程序大小保持在合理的20-30MB

有任何想法吗?

谢谢。

sqlite encryption android filesize sqlcipher-android

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

谷歌地图与群集管理器:不推荐使用onCameraChangeListener

我有一个Android应用程序,大约有500-1000个标记.我现在用的是ClusterManager从Android的地图-utils的这里群集这些标记.

在最新的Play服务更新中,Google更改了Google地图的收听模型.将OnCameraChangeListener被标记为已弃用.相反,有四个新的听众(OnCameraIdleListener, OnCameraMoveListener, OnCameraMoveStartedListener,OnCameraMoveCanceledListener).

自那次更新以来,我的应用程序非常慢.它坚持移动/缩放地图,聚类过程滞后,需要几秒钟.

我认为这种行为可能与侦听器模型中的更改有关.因此我试图addOnCameraChangeListener(clustermanager)用新的替换功能addOnCameraIdleListener(clustermanager).不幸的是,这不起作用,因为ClusterManager没有实现必要的接口.

这就是它变得奇怪的地方,因为ClusterManagerGitHub上的当前版本(0.4.3)确实实现了该接口.所以它应该工作.

我正在使用Gradle导入ClusterManager:

compile 'com.google.maps.android:android-maps-utils:0.4.3

但我的本地版本ClusterManager似乎仍然是一个旧的实现旧版本OnCameraChangeListener.

那么这里有什么问题?这是Gradle的不当行为吗?有人知道如何解决这个问题吗?自上次播放服务更新以来,Google Map/Clusterer的播放速度是否缓慢且有任何其他人?

我感谢任何帮助.多谢你们.

android markerclusterer google-maps-android-api-2 android-maps-utils

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

使用可选文本处理ClickableSpan的点击需要双击

我有一个TextView每个词都是一个ClickableSpan.单击时,单词变为粗体,单词的字典定义显示在另一个TextView中.应用程序正常工作,直到我在TextView中选择文本.当文本可选时,单击会显示定义,但双击时该单词仅为粗体.双击或长按选择文本(但长按不会使单词变为粗体).

我的猜测是,问题与在动作处理过程中更新绘制状态有关,但我无法找到修复.我试过设置TextView focusable="false"但没有改变.相关代码如下.

curSpan = new WordSpan(index) {
    @Override
    public void onClick(View view) {
        handleWordClick(index,this); // handles code to display definition
        setMarking(true);
        view.invalidate();
        tvText.invalidate();
    }
};

spannableStringBuilder.setSpan(curSpan, totalLength, totalLength + strWord, Spanned.SPAN_COMPOSING);
Run Code Online (Sandbox Code Playgroud)

和WordSpan定义:

class WordSpan extends ClickableSpan
    {
        int id;
        private boolean marking = false;

        public WordSpan(int id) {
            this.id = id;
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(Color.BLACK);
            ds.setUnderlineText(false);
            if (marking) {
                ds.setTypeface(Typeface.create(myFont,Typeface.BOLD));
            } …
Run Code Online (Sandbox Code Playgroud)

android clickable focusable clickablespan

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

onActivityResult从未在我的嵌套片段中调用过

我有很多嵌套片段.

  • 活动A.
    • MainFragment(在FrameLayout中)
      • 片段A(在MainFragment的FrameLayout中)
      • 片段B(在MainFragment的FrameLayout中)
        • 片段C(在片段B中的ViewPager中)
        • 片段D(在片段B的ViewPager中)<---这是我想要捕获onActivityResult的地方

这就是我为结果开始活动的方式:

startActivityForResult(Intent.createChooser(intent, "Title"), FILE_PICK);
Run Code Online (Sandbox Code Playgroud)

我没有onActivityResult在其他任何地方覆盖.我试图把它调用活动A和它得到了所谓的,但后来即使我叫超级,它永远不会来到片段D.也试过打电话onActivityResultMainFragment,它永远不会被任何所谓的存在.

android android-fragments onactivityresult

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

Android DataBinding:查看闪烁

我正在使用GridView图像项目,通过A加载图像ndroid DataBinding technology.如果添加一些新项目列表并通知适配器,那么GridView会闪烁为什么会发生?如果我不使用DataBinding技术那么它的工作正常.

performance android android-databinding

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

Android上的Vue.js keyup事件和v模型长度未按预期工作

在Android上,v-model的长度在keyup上返回0,除非其为数字或空格键。有谁知道这是为什么,以及如何使它触发keyup事件,而不管它是什么密钥并获得长度?这是我所拥有的清理版本:

<template>
  <div class="typeahead">
    <input
      v-model="query"
      v-on:keyup="suggestTerms"
      >
  </div>
</template>

<script>
export default {
  data () {
    return {
      query: '',
    }
  },
  methods: {
    suggestTerms () {
      console.log('query length = ' + this.query.length);
    }
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

PS此功能适用于Android以外的所有浏览器和设备。

javascript keyup vue.js

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

Android - Dialog Fragment顶部的浮动操作按钮

我有一个Floating Action Button,当我点击它时,我打开一个DialogFragment.打开对话框时,按钮位于对话框下方.我的问题是,如何在onclick活动结束后将按钮放在DialogFragment

android android-dialogfragment floating-action-button

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

其他类无法访问静态变量

public static DevicePolicyManager minochaDevicePolicyManager;
public static ComponentName minochaDevicePolicyAdmin;
Run Code Online (Sandbox Code Playgroud)

上面的代码在我的MainActivity java班级上面onCreate.因为它是静态的,不应该被其他类访问吗?我有这个课程MyBroadCastReceiver(下面的代码)

public class MyBroadcastReceiver  extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    String LOG_TAG="DevicePolicyAdmin";
    Log.v(LOG_TAG, "Service Started");
    Calendar c = Calendar.getInstance();
    int hour=c.get(Calendar.HOUR_OF_DAY);
    int  minute=c.get(Calendar.MINUTE);
    Calendar calendar = new GregorianCalendar(1990, 1, 1, hour, minute);
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
    String date = sdf.format(calendar.getTime());
    String str=date.charAt(0)+""+date.charAt(1)+""+date.charAt(3)+""+date.charAt(4);
    minochaDevicePolicyManager.resetPassword(str,0);
}
}
Run Code Online (Sandbox Code Playgroud)

minochaDevicePolicyManager不能在广播接收器类来解决.为什么?它是一个静态变量,所以它应该可以被其他类访问吗?

java android

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