Appcelerator将应用重置为初始状态

时间:2016-06-29 14:06:08

标签: android ios appcelerator appcelerator-titanium

我正在使用Appcelerator开发应用程序。 Appcelerator使用几乎类似于node.js这样的require.js。

现在我想实现一个记录当前用户的功能,并且不会留下任何痕迹。 最简单的方法是重新启动应用程序,但Appcelerator,尤其是Apple不支持此功能。

所以我必须打开登录窗口并清除向旧用户留下痕迹的所有数据。

最简单的方法是取消引用需求链中的一个主节点,使所有数据解除引用并收集垃圾。 我知道在节点中有一种方法(如here所述):

/**
* Removes a module from the cache
*/
function purgeCache(moduleName) {
    // Traverse the cache looking for the files
    // loaded by the specified module name
    searchCache(moduleName, function (mod) {
        delete require.cache[mod.id];
    });

    // Remove cached paths to the module.
    // Thanks to @bentael for pointing this out.
    Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
        if (cacheKey.indexOf(moduleName)>0) {
            delete module.constructor._pathCache[cacheKey];
        }
   });
};

/**
* Traverses the cache to search for all the cached
* files of the specified module name
*/
function searchCache(moduleName, callback) {
    // Resolve the module identified by the specified name
    var mod = require.resolve(moduleName);

    // Check if the module has been resolved and found within
    // the cache
    if (mod && ((mod = require.cache[mod]) !== undefined)) {
        // Recursively go over the results
        (function traverse(mod) {
            // Go over each of the module's children and
            // traverse them
            mod.children.forEach(function (child) {
                traverse(child);
            });

            // Call the specified callback providing the
            // found cached module
            callback(mod);
        }(mod));
    }
};

所以我尝试用console.log(require, "-" ,require.cache);读取appcelerator中的require-cache,输出如下:<KrollCallback: 0x79f6fe50> - <null>

现在我的问题是:

  1. 有没有办法在Appcelerator中达到require-cache?
  2. 你知道一种清理大型Appcelerator-App的方法吗?
  3. 因为可以为Appcelerator创建本机模块:

    1. 你知道一种清理大型Android应用程序的方法吗?
    2. 你知道一种清理大型iOS应用程序的方法吗?
    3. 非常感谢

0 个答案:

没有答案