[Q] Why does my app close when I switch to landscape? - Android Software Development

When I switch to landscape mode in Eclipse (using Ctrl+F11) or on my phone (Droid X), my app just closes. No errors or anything, it just goes away and displays the home screen. Any ideas why this would happen? I haven't tried to add any xml layouts for landscape, but I would not expect turning the phone to shut down the app.

Logcat logcat logcat, override all of ur activities main metis and put in thinking log code ie . Log.e(bla,"onPause") so u know what's happening. Normally when a phone changes orentation the whole activity gets destroyed and recreated with the diffetent dimensions. Iirc. Just gotta see what's going on.
Sent from my MB860 using Tapatalk

You're right, I need to figure out how to log in java. Dark3n was helping me work on this app and he saw that we were calling Finish() at the onPause, which was getting called when the orientation was changed. That was my problem.

It took me a while to figure out how the Android app lifecycle works. It seemed weird at first, but now that I understand it, I think it works pretty well. Because of the way orientation changes restart the app, it meant I didn't have to handle it with (as much) code internally as I did in the WinMo version of the app. I found that moving certain screen-size-related calculations to OnLayout() of my main layout class did wonders.

Related

On screen keyboard rotation (slow)

Hello,
I got my hero about 3 weeks ago. I was content with not rooting it and just using what it came with; However, once I saw how slow the keyboard rotation was, I have since been on a quest... trying all the different roms to see if the keyboard would rotate faster.
Just so we are clear, Im talking about the on-screen keyboard on my Sprint Hero (with Google). When I rotate the phone from portrait to landscape, the screen goes dim and then pauses for a few seconds before it rotates. I am kind of interested in the processes that happen when it rotates and I was thinking it just took that long before the accel-meter noticed that the phone had rotated and then once it figured it out, another second or two to redraw everthing.
But then when using the fresh 1.0 rom I noticed that extra animation setting where it zooms the screen out and then it rotates and swings back and forth for a while. When I turn the phone sideways it INSTANTLY zooms out and swings... no-delay. But that whole animation takes a few seconds and actually seems like it takes longer before the keyboard is usable again.
Anyway, I know this is getting long so I will just get to it. Do you guys know of any rom, or setting, or modification to this phone that will stop it from dimming the screen and taking so long before it rotates. My bosses iphone is near instant in it's rotation habits, and that is what I am after. I mean, yea, I love that locale does a lot of extra stuff for me, sipdroid lets me make calls over wifi, and I can use this phone as a remote for XBMC. But if it cannot do these basic things quickly, like rotating the keyboard, then I am going to consider spending my free time modifying my own rom. I am chest deep writing my first two apps for android and was hoping not to have to spend much time on such a trivial thing.
Is it sense? Is it the screen dimming animation? Any directions you can give me that will point me in the direction of giving this phone a stern kick in the butt would be appreciated. As I said, I am not afraid to dive into making my own custom rom, just down want to start that trip if I don't have to.
Thanks for any help you can give me guys.
flexgrip said:
But then when using the fresh 1.0 rom I noticed that extra animation setting where it zooms the screen out and then it rotates and swings back and forth for a while. When I turn the phone sideways it INSTANTLY zooms out and swings... no-delay. But that whole animation takes a few seconds and actually seems like it takes longer before the keyboard is usable again.
Anyway, I know this is getting long so I will just get to it. Do you guys know of any rom, or setting, or modification to this phone that will stop it from dimming the screen and taking so long before it rotates.
Click to expand...
Click to collapse
/system/framework/framework-res.apk > res > anim houses all of the phones animations.
Ones of particular interest to you would likely be fade_in, fade_out, accelerate_interpolator, decelerate_interpolator.
The down side? These are not human readable xml files, they are in binary. I can tell you that what you would look at changing would be
Code:
android:duration="@android:010E0002"
What I can't tell you is how to change it, because honestly I don't know. You can use axmlprinter2 (google it) to read it, but you can't convert it back to binary.
Thanks, I am checking that out now. I was able to look into all these cookie-cutter animations and see that they all seem pretty sluggish. Hopefully the api is documented/open enough to look into the process and see where all the time is spent. It is just mind-boggling that no one from HTC looked at this and tried to compare the user experience with other phones. I played with the droid a little and the keyboard is instant on it too. I doubt it is just a limit of the hero hardware.
It seems like the stock rotation setting makes the backlight dim and not fade-in or out in terms of animation. Any clue why? It doesn't seem like I can turn it off.
I ran that emulator version for the android SDK that lets you see how your app works when you rotate the screen. Unfortunately it doesn't follow the same routine that the actual phone uses when rotating and is merely for visuals.

How to get Android to always open root Activity

Ok, so I have been struggling for a couple days with this, and I hope someone can help me.
I want Android to always run my splash screen activity, because I load a bunch of data from web services that I need throughout the rest of the app. This works fine with the flag android:clearTaskOnLaunch="true" set when you launch the app from the home screen.
Where it does not work so well is the long press of the home button and then selecting the app. In that case it starts the app in whatever random spot the user left it last. The problem is that if the app has been killed due to memory, it still shows in that recent apps list and when a user restarts the activity from the long press, all my data is gone so the app force closes.
So, my ugly workaround is to remove the app from the recently run list. I would much rather it showed up there but that it started my app the same way as if it was clicked on the home screen.
Anybody know how to do this? The ebay app pretty much does this, so I know it can be done.
-frank
Instead of reading your data in OnCreate, you could do it in OnResume. See the flow chart here:
http://developer.android.com/reference/android/app/Activity.html
as you can see, OnResume is always called whether the app is created initially, resumed from pause, or reloaded.
kaediil said:
Ok, so I have been struggling for a couple days with this, and I hope someone can help me.
I want Android to always run my splash screen activity, because I load a bunch of data from web services that I need throughout the rest of the app. This works fine with the flag android:clearTaskOnLaunch="true" set when you launch the app from the home screen.
Where it does not work so well is the long press of the home button and then selecting the app. In that case it starts the app in whatever random spot the user left it last. The problem is that if the app has been killed due to memory, it still shows in that recent apps list and when a user restarts the activity from the long press, all my data is gone so the app force closes.
So, my ugly workaround is to remove the app from the recently run list. I would much rather it showed up there but that it started my app the same way as if it was clicked on the home screen.
Anybody know how to do this? The ebay app pretty much does this, so I know it can be done.
-frank
Click to expand...
Click to collapse
In the onResume for the activity that is crashing, you could test your data to see if it's still there, if it's null you can run the code to repopulate it again.

WP 8 and Multitasking

Hello there!
I would like to try it by myself, but unfortunately I cant. So, someone who tried the SDK, have you noticed changes in multitasking system?
Right now the only way to resume an app is using fast app switch. But I really dont like it. I rather just use the homescreen icon instead. Right now it relaunch the app.
Any changes on that? (oh please)
Thank you so much!
mikeeam said:
Hello there!
I would like to try it by myself, but unfortunately I cant. So, someone who tried the SDK, have you noticed changes in multitasking system?
Right now the only way to resume an app is using fast app switch. But I really dont like it. I rather just use the homescreen icon instead. Right now it relaunch the app.
Any changes on that? (oh please)
Thank you so much!
Click to expand...
Click to collapse
Windows Phone apps can never resume via the homescreen like iOS, due to the addition of the hardware OS back button.
To illustrate why; imagine you have an app that has start page and a settings menu. When a user goes to the settings menu, they can only go back to the start page by pressing the hardware back button (this is standard Metro design).
Now imagine a user opens the app, goes to the settings menu, then exists the app by pressing the Home button. They then do a few other tasks and then resume the app. They are now stuck in the settings menu and can't get back to the app start page; the back key will take them back to the WP8 Home screen (this is how the WP OS backstack works).
To get around this issue, Microsoft specify that starting the app from the front page always has to start a fresh instance, so the user can never get "stuck".
iOS has software back buttons on every page, so all apps can resume however you launch them. Android had the same problem with their back button (actually worse, as their backstack can be altered by the OS choosing to kill memory-intensive apps); to get around this, from ICS onwards Android apps are meant to have a software back button in the top-left, to go back within the application (hardware back key is still OS backstack).
Aphasaic2002 said:
Windows Phone apps can never resume via the homescreen like iOS, due to the addition of the hardware OS back button.
To illustrate why; imagine you have an app that has start page and a settings menu. When a user goes to the settings menu, they can only go back to the start page by pressing the hardware back button (this is standard Metro design).
Now imagine a user opens the app, goes to the settings menu, then exists the app by pressing the Home button. They then do a few other tasks and then resume the app. They are now stuck in the settings menu and can't get back to the app start page; the back key will take them back to the WP8 Home screen (this is how the WP OS backstack works).
To get around this issue, Microsoft specify that starting the app from the front page always has to start a fresh instance, so the user can never get "stuck".
iOS has software back buttons on every page, so all apps can resume however you launch them. Android had the same problem with their back button (actually worse, as their backstack can be altered by the OS choosing to kill memory-intensive apps); to get around this, from ICS onwards Android apps are meant to have a software back button in the top-left, to go back within the application (hardware back key is still OS backstack).
Click to expand...
Click to collapse
But it sucks so bad! They should review this. I hate to use the back button, and I hate to not resume the app. Using a common app, for example, WhatsApp. I was in a chat with someone. Then I hit Windows button and Im at start screen. Then I receive a message from the same person I just left the chat. What I do? I can open from the toast, can open from fast app switch (back button), or open from start screen icon.
If I open from toast, that will depend on what the app was meant to be. In WhatsApp it would take me to the chat, because of deep toast notification. But, right now, it needs to reload the whole app to open just the chat.
If I open from fast switch, it will resume the app right away. Nice. But in any other platform the message would be there waiting for you. Right now, in WP, it takes a lot to refresh the chat. You keep like 10 seconds staring at the screen waiting it. Its even faster to just reopen the whole app.
And if I open from start screen, its almost the same effect of toast, but it dont take me to the chat, but to the start screen of the app.
The point is, the fast switch is not helping that much. In fact, it would makes sense to change the fast switch to open when holding the Windows button instead of back button, and whenever an app is open, opening it from start screen icon just resume it. Actually, a lot of people doesnt even know, or even knowing, doesnt even use fast switch. Im not a common smartphone user, and even so I dont use fast switch.
For me, its the worse problem of platform. And I dont care about CE or NT if it works, but I care about it working at all. Doesnt make sense to put a whole computer in my pocket if it cant resume a single app.
i don't like the idea either to relaunch the app when you just have put it in background. then again, i also hope we will be able to close apps from the fast-appswitch-screen. and add an option to the gesture lovers out there: pinch out on homescreen to launch multitasking. or swipe from edge like w8. or anything like that. it would add to UI experience and would eliminate that 2-seconds-pause when pressing and holding down the backbutton.
Was the question not about Windows Phone 8?
Windows Phone 8 is supposed to behave differently, since true background processing is supposed to be enabled. I haven't played with the SDK yet, but I suspect that for non recompiled apps, things will behave as they do on Mango. But, I think that things changed to target WinRT and set to be able to run in the background will be able to resume right where you left off.
It wouldn't make sense for an app that is running and processing things in the background to restart when the tile is pressed.
It's been a while since I used Mango or wrote any apps for it. But, when an app is suspended, the dev has a specified amount of time to save the state.
That way when it is relaunched, the app can resume where it left off, by processing the saved state on launch. I thought with fast resume the app stayed in memory, but that was done through a registry hack and not directly made available by any carrier.
After doing some reading, the multi tasking enhancements might only add gps and voip to the currently supported background processing.
JVH3 said:
But it sucks so bad! They should review this. I hate to use the back button, and I hate to not resume the app. Using a common app, for example, WhatsApp. I was in a chat with someone. Then I hit Windows button and Im at start screen. Then I receive a message from the same person I just left the chat. What I do? I can open from the toast, can open from fast app switch (back button), or open from start screen icon.
If I open from toast, that will depend on what the app was meant to be. In WhatsApp it would take me to the chat, because of deep toast notification. But, right now, it needs to reload the whole app to open just the chat.
Click to expand...
Click to collapse
Tapping the toast to re-open the chat is the correct behavior here. I guess it's just bad coding that makes it take so long to resume; it should just be able to go straight to the conversation and skip all the "loading contacts...connecting" stuff.
JVH3 said:
Was the question not about Windows Phone 8?
Windows Phone 8 is supposed to behave differently, since true background processing is supposed to be enabled. I haven't played with the SDK yet, but I suspect that for non recompiled apps, things will behave as they do on Mango.
But, I think that things changed to target WinRT and set to be able to run in the background will be able to resume right where you left off.
Click to expand...
Click to collapse
Are you sure you're not thinking of Windows 8? For Windows Phone 8, no changes have been announced regarding multitasking or background tasks, *except* that a few select APIs (VOIP, location) will be able to run in the background, similar to iOS (not true backgrounding like Android)
Also we are talking about resuming, not background processing. In the WP8 SDK emulator, apps built into the OS don't resume; Therefore it's safe to assume 3rd party apps are not going to either.
JVH3 said:
It wouldn't make sense for an app that is running and processing things in the background to restart when the tile is pressed.
It's been a while since I used Mango or wrote any apps for it. But, when an app is suspended, the dev has a specified amount of time to save the state.
That way when it is relaunched, the app can resume where it left off, by processing the saved state on launch. I thought with fast resume the app stayed in memory, but that was done through a registry hack and not directly made available by any carrier.
Click to expand...
Click to collapse
When an app is closed the developer is meant to save the state, so that it can be reloaded if it is quick-resumed. However, once the app leaves the backstack (the 5 apps that appear in when you hold the back-button), this state is supposed to be discarded.
This is not a technical issue; it would be trivial for app developers to save the state and make their apps resume. The issue is that Microsoft's publishing guidelines (to get your app published on the WP app store) specifically says that an app launched from the home screen must launch showing it's introduction page, i.e. it can't resume. It could save some state, so a web-browser could still have all the recent tabs open, but it couldn't show the last one seen (ironically IE9 does resume it's state - guess Microsoft are allowed to break their own guidelines).
I agree it doesn't make sense to restart an app that is performing some background task; but then how to you avoid users getting stuck within a certain page, as in my example above? If WP8 includes a hardware back button, they can't change this policy.
Well, thats a shame. I hate reloading the app everytime I need it. Its so meaningless. I dont need VOIP, I dont need Skype running all the time. But I do need apps to be fast.
It really depends on how exactly the developers save their app state when the app is sent to background/tombstoned.
I, for one, use a text file to save data ( a lot of data) and proceed to loading the app as usual, and the moment the user presses a button, a pop up asks him weather he wants to restore or start anew.
I'm guessing that not every app will do this, as it is up to the developer to implement this.

[Q] is There a Way to Force a Landscape App to Run in Portrait Mode?

Sorry if this is the wrong place to post, but I figured since what I I'm trying to do involves Android Wear, I'd post in the Wear fourms.
So anyways, I recently found the Fallout 4 Pip-Boy app runs on Wear but the app runs in the watch's "landscape" mode, which makes the already impractical app virtually unusable.
Is there any way to Force the app to display in the watch's "portrait" position? It's a square screen, so it would still keep the same resolution, just flipped.
Thanks! And again, sorry if this is the wrong place to post.
I've used "Set Orientation"
see: http://corbindavenport.com/?p=201
ranf said:
I've used "Set Orientation"
Click to expand...
Click to collapse
I've tried that app before but it always just gives me a blank white screen when I run it.
Luckily someone who had previously decompiled the app I wanted shared their APK with me. They removed the forced landscape mode, and the app now displays in portrait, but I'm still curious to know if there is a way to force an app to run in portrait when it's forced to run in landscape without editing the code.
I ran it on the phone first to see where stuff is.
https://youtu.be/3a6HwCoM8V0

Error log red overlay covers entire screen. How to disable!

This is driving me nuts. Any time an application crashes I get a red overlay with diagnostic data that covers the screen. The only way I can remove it is by rebooting. As I'm typing this it's covering my screen! Help me find the setting to get rid of this please
Attached are screenshots showing the various examples. I literally froze every single user app and a few system apps I could except for Chrome and it still happened so I'm certain this is part of the latest os update
Another example showing that it doesn't rotate
Bump. It's very annoying
braschlosan said:
Bump. It's very annoying
Click to expand...
Click to collapse
Have you accidentally activated some drawings or debug within developer settings? Or any task manager with overlay (check your processes)?
I assumed I might have enabled something like that and went through all the settings looking for it but can't find one.
I also used titanium backup to freeze every app on my phone until there were only a few systems apps left and it still happens which leads me to believe it's some feature in the os

Categories

Resources