ios4 - 应用程序在使用最新的 Flurry SDK 和 ios4 重新启动时挂起

标签 ios4 flurry

我对最新版本的 Flurry(Flurry iPhone SDK v2.5)有一个令人沮丧的问题。当我启动我的应用程序时,快速退出,然后重新启动应用程序,应用程序短暂加载,闪烁黑屏,然后停留在黑屏上。黑屏一直存在,直到我按下主页按钮,此时我可以正常重新启动应用程序。我进一步研究了这一点,结果发现应用程序状态代表以错误的顺序被调用:

  • applicationDidBecomeActive//应用第一次加载完成
  • applicationWillResignActive//app开始辞职
  • applicationWillEnterForeground//此时,我已经快速重启了app,这个叫
  • applicationDidEnterBackground//当这个delegate被调用时,屏幕变黑
  • applicationDidEnterBackground//当我再次点击主页按钮时,屏幕挂了一段时间后,这会被调用。

  • 所以我认为这意味着一旦我按下主页按钮,有些进程需要更长的时间来结束,如果我尝试过快地再次启动应用程序,则会出现一些非常奇怪的行为。如果我等待几秒钟重新启动应用程序,应用程序将正常运行。

    为了演示这个问题,我创建了我能想到的最简单的应用程序,我将在这里发布。我用 XCode 3.2.3 构建了这个,在 4.0 版本中直接构建到我的 iphone 设备(iphone 4)上。 这很重要,因为我无法在模拟器上重现这个问题。 您可以通过创建一个名为 simpleApp 的基于导航的新项目来重现此应用程序,并将此代码放入其中,当然还有您自己的 Flurry API key 。
    这是 simpleAppAppDelegate.m:
    #import "simpleAppAppDelegate.h"
    #import "RootViewController.h"
    #import "FlurryAPI.h"
    
    
    @implementation simpleAppAppDelegate
    
    @synthesize window;
    @synthesize navigationController;
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
        [FlurryAPI startSession:@"<your api key here>"];    
    
        [window addSubview:navigationController.view];
        [window makeKeyAndVisible];
    
        return YES;
    }
    
    
    - (void)applicationWillResignActive:(UIApplication *)application {
        printf("applicationWillResignActive\n");
    }
    
    
    - (void)applicationDidEnterBackground:(UIApplication *)application {
        printf("applicationDidEnterBackground\n");
    }
    
    
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        printf("applicationWillEnterForeground\n");
    }
    
    
    - (void)applicationDidBecomeActive:(UIApplication *)application {
        printf("applicationDidBecomeActive\n");
    }
    
    
    - (void)applicationWillTerminate:(UIApplication *)application {
        printf("applicationWillTerminate\n");
    }
    
    - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    }
    
    - (void)dealloc {
        [navigationController release];
        [window release];
        [super dealloc];
    }
    
    @end
    

    这是 simpleAppAppDelegate.h:
    #import <UIKit/UIKit.h>
    
    @interface simpleAppAppDelegate : NSObject <UIApplicationDelegate> {
    
        UIWindow *window;
        UINavigationController *navigationController;
    }
    
    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
    
    @end
    

    所以无论如何,因为这么多应用程序都在使用 Flurry,所以我觉得我一定缺少一些非常基本的东西。真正让我难以置信的是,我根本没有发现任何人提示这个特定问题。 此外,这与之前版本中的应用程序似乎立即启动,然后黑屏几秒钟,然后正常恢复的问题不同。这个问题是通过调用 [FlurryAPI setSessionReportsOnCloseEnabled:false] 解决的;在我设置 session 之后,但这在这种情况下没有帮助。

    无论如何,有没有其他人遇到过这个问题?我真的希望这只是我的一个愚蠢的错误。我真的很高兴使用 Flurry,但这样的事情会导致我的应用程序被拒绝。

    最佳答案

    我写了关于这个的 Flurry,他们很快就回复我说他们会调查这个。大约一周后,他们回信说他们在 v2.6 中修复了它,现在可以使用了。我似乎无法再重现这个问题了。

    并不是说我很棒或其他什么,但我确实单枪匹马地修复了这个错误。

    关于ios4 - 应用程序在使用最新的 Flurry SDK 和 ios4 重新启动时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170857/

    相关文章:

    iphone - 使用叠加 View 制作 MPMoviePlayer 的更好方法

    cocoa-touch - UITableView 行高没有用文本绘制得更高

    ios - 这个崩溃日志是什么意思?无法符号化

    iphone - 任何好的 iOS 崩溃报告服务

    android - Flurry 应该用在 Services 和 AsyncTasks 中?

    xcode - Flurry 群组分析 - 如何跟踪设备 ID?

    iphone - 无法在 plist 文件中写入 bool 值

    ios - iPhone :How open two safari browser tab with two link on button action in iphone?

    ios - 适用于 iOS 设备的跟踪 API

    iphone - 如何在iphone sdk中接收语音邮件?