How to handle closing apps with multitasking with Objective C? - iphone

I have read some bits and pieces here and there about multitasking, but I am not sure I grasp it all. Basically, I have an iPhone app that runs quite ok on the iPhone simulator (I have yet to pay the dev fee to be able to deploy to an actual iPhone).
In the simulator, I can enter and exit the app, without issue. When I open the multitasking bar (double tap on the home button), I can close the app. When I try to reopen it, I then get an error.
I wonder, is this because testing closing and opening the app from multitasking is only possible on an actual iPhone, or are the some additional events I should be listening to? I have read this: http://www.cocos2d-iphone.org/forum/topic/8767 and added some handlers, but this article feels dated, and it didn't change anything.
Any help is appreciated!

The post about SIGKILL is correct. It is normal behavior for your application. Xcode is just reporting what killed your application the last time. Simply stop the execution and run your app again, and you should be fine.

As Richard said, that is normal. If you want to test it yourself:
Run the app using Xcode.
Stop the app using Xcode. (Press the Stop button which is directly to the right of the run button.
Launch the app by clicking on it in the Simulator's home screen.
Close the app and then close it from the multitasking bar.
Launch it again.
Good luck :)

Related

iPhone 4.3.3 shows wrong(depreciated) 'zoom-in' snapshot(screenshot) at launch

It's hard to describe my iPhone's situation..
I launched an App and used it. for example, a Twitter app.
After that I closed it with Home Button.
Then I launched a few apps which were enough to take most memory.
And, when I launch the Twitter app again, a screenshot(snapshot), which was taken exactly when I closed the app at first, was shown about 0.5~1 sec.
I know this is a way of animation effect, but mine is somewhat wrong,
because that screenshot should be 'loading image (ex: Default.png)' if the app launched long time ago is about to start from the beginning (the 'twitter' app must be closed because of out of memory).
It makes stressful situation when I use kind of 'personal memo app'.
Before I upgrade to iOS 4.3.3, whenever I launch this app, it requires password without showing any old screenshot.
But now, everyone can see my memo because of that automatic snapshot which pops up about a second.
Help needed. Thanks!
Before your app goes into background you need to hide/remove all the views you don't want to appear when you open the app again.
You should do this in the applicationDidEnterBackground: UIApplicationDelegate method.
See the Remove sensitive information from views before moving to the background bullet point in this section of the Apple Developer Docs.
The only way I know to prevent that is to set "Application does not run in background" in your plist file.

Launch emergency App/Do emergency call without screen-unlocking the iPhone

I want to run my application without opening the slide lock of iPhone the icon of the app should be displayed on the home wallpaper or screen. by tapping on the icon the app should run its an emergency service application. So is there any service provided by apple like calling emergency numbers without opening lock.
please suggest me
thanks..
No. You have to launch all Apps through the home screen (Springboard).
There might be a way to do this when jailbreaking the device, though.
That same functionality, which you speak of, is exactly what runs on the iPhone BEFORE it is "activated". I wonder if there is a way to use this already built in app to create what you're shooting for.

Application crashes after installing iOS 4.2

I recently installed iOS 4.2 for my iPod after then my application started to crash.
The scenario is: I launch my application wait until it's up and running then hit the iPod home button then launch my application again, my application starts again for seconds then crashes.
my application is a job search engine, so in all of its navigation pages it's communicating with internet server.
I think the problem has to do with applicationDidEnterBackground, applicationWillEnterForeground, or applicationDidBecomeActive methods. I do not have an code in these methods and I do not know if I need to, to prevent the crash.
I do not understand what happens after I hit the home button and my application goes to the background:
will it still be running in the background (because of the multithreading thing in iOS4.2).
Sometimes when I relaunch my application it goes to last page I left in before hitting the home button and sometime it starts from the home page.
I do not understand what's going on, I just want it every time it starts to start in the home page.
I was just about to submit my application to the Apple Store just before I updated to iOS4.2 and the crash starts to happen. I'd really appreciate if someone can help me with this issue that I'm not even able/or know how to debug.
Thanks a lot in advance.
Regards,
You can set the Info.plist key ApplicationDoesNotRunOnBackground to make sure the app is completely terminated.
Xcode / Organizer will show your device crash logs.
Xcode -> COMMAND+CONTROL+O -> Device Logs or you (making sure the device is connected) can select the iPod from the list of devices, then choose Device Logs.
You don't need to have any code in the applicationDidEnterBackground, applicationWillEnterForeground, or applicationDidBecomeActive delegates, so that's not making your app crash.
I would definitely check out some of those logs in Organizer. Maybe post some of them here, or pastie.org

iphone app cant be started on device after being killed - works fine on simulator

I want to put an update to my App and I'm encountering heavy issues. When sent to background and being brought back to foreground, the App works fine. However, after killing the process from multitasking (running in the background), the App tries to resume from the point where it left AND it freezes, which means, I cant start the App anymore!!!! I have made no changes to the code, except updating my OS from 4.0 to 4.0.1.
Can anyone help me out on this?
A weird thing is: I cannot reproduce this problem on the simulator, it works just fine there.
I seem to have found the solution. Apple states in the updates: 'When debugging your multitasking enabled app, avoid manually pausing and continuing from the debugger when the application is suspended in the background. Pausing an application that is suspended in the background disrupts proper multitasking behavior until the application is relaunched.' So I tested it on a device for distribution and it seems to work fine, so all you have to do is ignore the debugger - it seems. Best of luck!
My app works fine for me in Debug mode (I'd advice against working with Distribution mode cause of all the hassle of provisioning profile, iTunes sync... and also you can't see the console message in real time).
The reason you can't do anything after killing the app and relaunching it is most likely because you run it directly from XCode (Command + Enter) and the app is still "running". Just click to the Red button to stop the debugging, then you can relaunch the app from the SpringBoard normally. Or just Command + Enter to rebuild it again.

Problem with app on device

When I run my app with simulator every thing is ok.also when i run it on device (ipod touch 3G) for the first time,i have no problem but if i close my app and run it again,it hangs(no button working & just i can uninstall it) and if i try to minimize it ios seems out of action(every thing is being black)
how can i solve this problem ?
Run your application in the simulator with the profiling tools, making sure you check for allocations / releases and if there are any network resources left open.
You haven't said anything about what your app does to give any more help than that, but the development tools will tell you what is going on.
Also when you connect to the iPod, check the crash reports to see what happened
have u release any object in appWillTerminate. may be u trying to release object that is already released before the application quit. or u can see the application quit status in nslog if status is not 0 means application is not quitting properly.