小编Nit*_*nai的帖子

PhoneGap在iOS8中使用的方式比iOS7更多

我有一个PhoneGap应用程序.HTML5 Canvas游戏.它似乎在iOS 8(包括8.0.2)和iOS 7中使用了更多的内存.

除了使用更多内存之外,JS垃圾收集器似乎也没有释放它所拥有的内存.它正确地收集"释放"内存,但从未将其释放回iOS供使用.

以下是在iOS 7和iPhone 5S下使用Instruments Allocations的内存使用情况.你可以看到它在我加载和卸载一个级别时上下移动.内存使用率也很低,约为23mb,最高为41.81mb

在iOS 7下运行的PhoneGap Canvas应用程序

这是在带有iOS 8.0.2的iPhone 5S上运行的相同应用程序.正如您所看到的,内存使用量永远不会下降,并且它会占用更多内存.事实上,当我加载和卸载相同级别时,内存使用量会持续上升.它没有那么高,这让我觉得JS正确地重用了垃圾收集器中的内存,但是GC似乎永远不会释放它保留在操作系统中的内存.此外,整个应用程序似乎使用比以前更多的内存.

该应用程序运行速度也慢得多,到我停止时达到了121mb.

在iOS 8下运行的PhoneGap Canvas应用程序

我应该补充一点,在卸载关卡时我会重新加载页面,这很奇怪地不会释放iOS 8下的任何内存.

有没有人有任何想法可能导致这个问题,解决方案可能是什么?这是iOS 8中的错误吗?

在8.0(但不是8.1)中,可以使用解决方法/ hack释放:window.location.reload(true);在强制页面重新加载之前调用window.location.href =.从8.1开始,这个hack/workaround不起作用.

memory cordova ios7 ios8

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

Android NDK #define问题

当我将#define添加到main.cpp或从main.cpp调用的一个头文件时,它似乎没有在其他文件中定义.

例如,在main.cpp中,我可能会执行以下操作:

#define TEST_FOO 1
Run Code Online (Sandbox Code Playgroud)

然后在我的其他一个文件中,例如secondfile.cpp,忽略TEST_FOO,就像它从未定义过一样:

#if TEST_FOO
// do something <- this never gets reached
#endif
Run Code Online (Sandbox Code Playgroud)

即使在Android.mk文件中,我在main.cpp之后放置了secondfile.cpp:

LOCAL_SRC_FILES := main.cpp \
                   secondfile.cpp
Run Code Online (Sandbox Code Playgroud)

有没有办法在实际代码中#define Android NDK中的值?

android android-ndk c-preprocessor

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

使用PhoneGap处理iOS内存警告

我真的很惊讶没有人问过这个问题:如何使用PhoneGap处理iOS内存警告?

具体来说,当iOS本机应用程序收到内存警告时,如何调用我的一个JS函数

谢谢!

javascript memory ios cordova

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

我可以在Android NDK中使用ifstream来访问资产吗?

我的问题非常简单,但我很难在网上找到任何关于此的信息.

是否可以使用ifstream使用Android NDK从资产和/或资源中打开文件?

例如,将test.txt文件放在/ assets中并尝试以下操作不起作用:

    char pLine[256];
    std::ifstream fin("/assets/test.txt");
    if(!fin.fail())
    {
        LOGD( "test.txt opened" );
        while( !fin.eof() )
        {
            fin.getline( pLine, 256 );
            LOGD(pLine);
        }
    }
    else
    {
        LOGD( "test.txt FAILED TO OPEN!" );
    }
    fin.close();
Run Code Online (Sandbox Code Playgroud)

也没有任何变量:

    std::ifstream fin("assets/test.txt");

    std::ifstream fin("test.txt");
Run Code Online (Sandbox Code Playgroud)

等等......而不是把它放在/ res中.

那么,是否可以使用普通的ifstream运算符来访问资产和/或资源文件?

resources android assets ifstream android-ndk

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