Well, you know me, I seem to be pretty decent at just complaining about things. So, let’s dive right into the Android SDK.
There is a visual designer, but nobody uses it. Nobody should use it. It’s terrible.
I can’t say it’s the fault of XML inherently, maybe it’s just the editor and the rendering that has major issues, but it’s broken as hell in Eclipse and Android Studio and using it is only useful for widgets or nested fragments.
I don’t like it’s HTML+CSS-like design. It feels filthy. It could be a lot worse, though, so let’s put aside this gripe and move to the main issue.
The actual API
When I jumped into android programming, I was so frustrated. Super pissed. That’s because I was stuck in the UI design and restoring states, I gave up.
Later on, a very retarded android developer (people actually pay him) told me to use the AndroidManifest.xml hack to let android handle my orientation changes for me.
Holy fucking shit it was like a brand new world!
No more Parcelable classes, no more savedInstanceState bundles… everything was awesome. Of course, this was all placebo, because in the end I needed to change my methods away from the XML configuration hack (because there is many forms of changing states in Android, and it only handles a few of them).
- I hate how the OS doesn’t handle states itself.
- I hate that I have to handle states, and I hate that it is so troublesome. You either have to store specific members of a class, or make your class extend Parcelable, which means writing a lot more lines when you really shouldn’t have to.
- I hate how much extra typing I have to do to deal with savedInstanceState or retained, nested fragments (which is ultimately what I ended up using, a hell of a lot easier than that retarded bundle bullshit).
- I don’t like how only some of the XML settings for layouts has a method in an object (Like, for ListView you can set ‘divider’, and ‘dividerHeight’ in XML and Java, but you can’t ‘showDividers’, this is a minor example that I had on hand, but it happens all the time).
- This is an SDK problem, but it’s also a slight Java problem (depending on who you ask) – Overrides lead to ambiguity. That is because the SDK is ambiguous. Yes, there is Fragment and Activity life cycles in the SDK docs, however that lifecycle isn’t always true in every circumstance. Some overrides are only fired in specific circumstances, and sometimes that information is buried in lines of text elsewhere, and you only find out when you get a NullPointerException or some such thing. Annoying.
Full disclosure, I’m not a professional Java developer or anything, and even I can see that in many ways, a lot of my extra burden would be resolved in my projects by extended classes (I do it sometimes, but probably not nearly as much as I should), so many of these points might be moot. I mean, if I can speed of the development of other things, maybe this burden wouldn’t be so heavy? I don’t know, but I know these things are a burden. It really sucks the energy out of me when I have to make another fragment class just to retain data across orientation changes, app kills, minimize/maximize… etc. It takes up a lot of time that I could be spending on other things, and it seems like it could be a lot easier. That’s just me. Maybe I’m wrong.
It could be that I’m a moron and I’m making this way too hard on myself, it’s happened before. If I am indeed a moron, please comment below and tell me how to do this less verbosely.
What would a rant be without the things I really enjoy?
- I like Java’s default classes and how extensive string manipulation is, how easy it is, I like the eclipse editor (although people keep trying to push me into studio). There’s a lot of stuff already done for you, like C#.
- I like the HUGE amount of libraries which solve problems I’ve not had to solve myself by nature of them existing. Jsoup, Picasso, OkHttp and Joda Time are super.
- Overrides, while being a problem they are also a godsend – because, well, you can override anything. Ignoring the ambiguity of some SDK functions, this allowed me to make some very cool changes to widgets that wouldn’t have been possible in some other languages. So they’re also good in their own way.
- Another compliment for Java – Strong typing. Weak types pls go.
Anyway, final bit of info, here’s some screenshots from an app I’ve been making. It’s dumb animu bullshit but it seems at least 120 people are interested in it, since that’s how big my alpha tester group is (Has 120 users by word of mouth on facebook/twitter/etc, it’s a closed group, pretty impressive I think, especially since it’s only been a couple days)
File listing for haruhichan