相关疑难解决方法(0)

如何在Android中发现我的应用程序的内存使用情况?

如何以编程方式找到我的Android应用程序上使用的内存?

我希望有办法做到这一点.另外,我如何获得手机的免费记忆?

java memory android memory-management

787
推荐指数
7
解决办法
30万
查看次数

在Android中检测应用程序堆大小

如何以编程方式检测Android应用程序可用的应用程序堆大小?

我听说有一个功能可以在SDK的更高版本中执行此操作.无论如何,我正在寻找适合1.5及以上的解决方案.

memory heap android heap-memory

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

如何在下降内存消耗和查找时间的大单词列表(词汇表)中找到单词?

问题

[ 以下是应用程序在哪些约束条件下应该做的描述 ]

我想要一个数据结构,搜索string一个250,000字列表中是否存在,同时只使用相当数量的ram并保持将这个数据结构加载到ram small所需的时间(比如说0-8秒).找到一个单词所需的时间也应该很快(比方说0到0.5秒),但ram的使用更为重要.它也应该可以创建多个游戏(更多关于这个游戏的标题是"使用"),而不需要更多的内存.

知道哪些单词以a开头string,但不足以牺牲加载时间达数秒也是非常有价值的.


使用

它适用于Android离线游戏.有限的ram可用.应用程序根据此帖子可以使用的最大ram数量在16-32mb ram之间,具体取决于设备.我的空Android应用程序已经使用了大约17mb(在Android Studio中使用Memory Monitor).我的android设备将ram的使用量限制在26mb,让我的整个空间大约为8mb Activity.


我试过的选项

他们似乎都注定了不同的方式.

  1. Hashmap - 将所有单词读入哈希映射对象.

    1.1 初始化速度:用23秒慢速将每个单词读入哈希映射.

    1.2 ram用法:使用大量的ram,虽然我忘记了多少.

    1.3 搜索速度:查找列表中是否存在单词的速度当然很快.

    1.4 缩小可能的单词(可选):慢,需要经过整个哈希映射并逐个删除它们.此外,由于它使用删除,因此无法使用相同的哈希映射实例来播放多个游戏.添加更多游戏时会占用太多内存,因此无法缩小可能的单词.

  2. 特里 -实现一个RadixTree& 你可以在这里看到我的实现.

    2.1 初始化速度:用47秒慢速读取每个单词进入RadixTree.

    2.2 ram使用:使用大量的ram,以至于Android几次挂起线程.

    2.3 搜索速度:查找列表中是否存在单词是否快速.

    2.4 缩小可能的单词(可选):超快,因为只需要对树中的节点进行引用,然后找到所有可能的单词作为其子节点.您可以通过缩小可能的单词来玩很多游戏,因为额外的游戏只需要参考树中的节点!

  3. 扫描仪 - 按顺序浏览文字文件

    3.1 初始化速度:无.

    3.2 ram用法:无.

    3.3 搜索速度:约20秒.

    3.4 缩小可能的单词(可选):不能现实地完成.

简单代码:

String word;
String wordToFind = "example";
boolean foundWord = false;

while …
Run Code Online (Sandbox Code Playgroud)

java memory performance android

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

strings.xml资源有多大?

我看到这篇帖子说,当strings.xml应用程序太大时应用程序可能崩溃.我的strings.xml文件现在是700行,它会在很长一段时间内变大.

帖子中的答案说使用SQLite数据库可以防止这种情况.

但在我的情况下,我有一个SQLite数据库,可以获取条目的数据,strings.xml因为我的应用程序使用不同语言的区域设置.

我的问题是,有多大strings.xml?如果我达到线路限制,我该怎么做才能防止崩溃?

android android-resources

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

我不能在两个活动之间传递太大的对象arraylist?

我试图在两个活动之间传递自定义对象的数组列表抛出意图,但我得到了这个错误,我不知道如何解决它.如果有人能帮助我,我将不胜感激!提前致谢.

传递第1个活动的方法:

i.putParcelableArrayListExtra("key", (ArrayList<? extends Parcelable>) result);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

进入第2个活动的方法:

Intent i = getIntent();
ArrayList<ItemObjects> list = i.getParcelableArrayListExtra("key");
Run Code Online (Sandbox Code Playgroud)

错误日志:

12-25 09:11:49.546 17742-17742/com.example.baha.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.baha.myapplication, PID: 17742
java.lang.RuntimeException: Failure from system
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1514)
    at android.app.Activity.startActivityForResult(Activity.java:3917)
    at android.app.Activity.startActivityForResult(Activity.java:3877)
    at android.app.Activity.startActivity(Activity.java:4200)
    at android.app.Activity.startActivity(Activity.java:4168)
    at com.example.baha.myapplication.splash$GetMarkets.onPostExecute(splash.java:127)
    at com.example.baha.myapplication.splash$GetMarkets.onPostExecute(splash.java:62)
    at android.os.AsyncTask.finish(AsyncTask.java:651)
    at android.os.AsyncTask.-wrap1(AsyncTask.java)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: android.os.TransactionTooLargeException: data parcel size 12404332 bytes
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(Binder.java:503)
    at …
Run Code Online (Sandbox Code Playgroud)

java android arraylist android-intent

5
推荐指数
2
解决办法
2986
查看次数