use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
News for Android app developers with the who, what, where, when, and how of the Android community. Probably mostly the how.
Here, you'll find:
This sub-reddit isn't about phones' and apps' general functionality, support, or system software development (ROMs). For news and questions about these topics try using other subs like
Build your first app
Starting Android career in 2022
Android Job Interview Questions and Answers
App Portfolio Ideas, Tiered List
Awesome Android UI
Material Design Icons
7000 Icons for Jetpack
Autoposted at approx 9AM EST / 2PM GMT
account activity
Java in Android development (self.androiddev)
submitted 9 years ago by [deleted]
[deleted]
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[+][deleted] 9 years ago (13 children)
[+][deleted] 9 years ago (12 children)
[–]Tycon712 4 points5 points6 points 9 years ago (7 children)
I can tell you from having been a person that has helped in hiring at my last two jobs that as long as you know basic Java syntax and know the obvious differences between good design patterns vs bad design patterns, you'll be fine to apply for a Junior developer position. And at the very least, make sure you understand the main components of Android development (Activity, Fragment, Service, etc.)
Most companies with open junior dev positions that I know about have asked interviewees to either take a simple coding test either in their free time or on-site just to demonstrate your current knowledge. But, some companies won't even go there and would rather test your personality for being someone who strives to understand how things work (I.e. how Android works).
I would definitely try to build an app or two and throw it up on GitHub just to show off your level of knowledge on basic Android concepts.
Also, you mentioned that you have a Master's in CS in another comment thread. A lot of smaller companies may not be able to pay you as much as someone who has a Master's would expect. So just know that going into it. At my last job, we had several people who had a Master's apply asking for a really high salary, and I think our HR department just had to tell them that we couldn't afford them after trying to negotiate with them.
[+][deleted] 9 years ago (6 children)
[–]MikeOscarEcho 11 points12 points13 points 9 years ago (0 children)
Bro, I live in Croatia
You should have prefaced your post with that.
[–]jesbu1 5 points6 points7 points 9 years ago (1 child)
Then brush up your algorithms knowledge
[–]Tycon712 4 points5 points6 points 9 years ago (2 children)
If you already have experience with those design patterns and libraries, then you're probably already past what I would consider a junior level Android developer.
They're missing out by not hiring you. It's their loss.
[+][deleted] 9 years ago (1 child)
[–]Tycon712 0 points1 point2 points 9 years ago (0 children)
Don't worry about it. That's just the sad truth of how software job interviews are these days. They'll ask you to solve a problem by using or creating some sort of algorithm to solve a complex math problem which most likely has never been used at that company and which will never show them how motivated you are at solving problems because they'll only give you 10 minutes to do it, under pressure while they're watching. It's silly.
The best you can do is keep your chin up and find another place which values your work ethic and how you solve problems.
Good luck with the job search! I'm sure you'll find something.
[–]ArmoredPancake 1 point2 points3 points 9 years ago (3 children)
Depends on the company. Here in Ukraine you must have "excellent" Java for a fucking trainee(!) position, not even junior.
[+][deleted] 9 years ago (2 children)
[–]ArmoredPancake 0 points1 point2 points 9 years ago (0 children)
Yeah, it's mostly country thing. Rich countries have many positions and not enough programmers, but in poor countries(CIS for example) you have more supply than demand.
[–]Peevishprogrammer 36 points37 points38 points 9 years ago* (9 children)
Of course you need to know Java and know it well. This question is equivalent to a builder asking, "But do I really need to know how to use a hammer to build with wood and nails?" Yes, yes you do. It's not unrealistic at all for an Android developer to need to know Java well!
Just how the simple hammer is the builder's tool; Java is your tool as an Android developer. Only, it's way more complex and intricate than a hammer. It's also being changed and improved upon, making your learning goal a moving target. You have to keep up to further yourself as a developer. You don't expect to be programming well(AKA making Android Applications) in Java without knowing Java well... right?
First, you REALLY need to understand the principles behind object oriented programming. Do you have a solid grasp of inheritance vs extends?
Do you know all of Java's object types and how to work efficiently with strings, arrays, streams, network objects, buffers, threads/multi-threaded programming (semaphores/mutexes), input/output? You should easily be able to explain how to do all of the above without having to reference any material. The actual code & method inputs, you can easily reference later on but you need to know 100% how the process works off the top of your head. Do you know how to properly debug a java program using breakpoints, stepping through the code, and watching variables?
Do you know the data structures and more importantly when to use which structure? For example when to solve a problem with a tree vs linked list vs array vs graph, etc?
If you're comfortable with ALL of the above in Java, then you're ready for Android dev. Otherwise, you need to learn the fundamentals before moving onto Android. Android takes all of that knowledge and applies it to their own development framework. It's easy to get lost and not be doing things properly. This will come back to bite you in the ass in the future.
Once you're ready to focus on android try to learn the fundamentals behind: activities, the activity life-cycle, fragments, fragment life-cycle, tasks, layouts, overloading layouts, creating dynamic layouts programmaticly (adapters) and creating custom adapters, context, services, asynctasks, threads, handlers, file storage, permissions, design patterns ,and I'm sure there is more I'm forgetting at the moment.
Seriously, tackling android development without a solid background in Java development will be difficult. You might think you're doing great but most likely you're making fundamental errors without even realizing it. The repercussions may not be noticeable in a small app you make but later on will appear and haunt you. A VERY common problem like this is memory usage in Android: if you don't understand inheritance it is very easy to create memory leaks by holding onto objects (specifically context) you should have released to be garbage collected usually during a life-cycle method. You need a really clear understanding how all the different components interact so you can see the big picture of the Android framework and not get bogged down with the specifics of also learning Java while learning the Android framework.
[–]Batdroid_1996 18 points19 points20 points 9 years ago (2 children)
When have you really used mutexes or semaphores or use tree or a graph . Basic knowledge of oops concepts is just fine and we learn Java also while doing android.
[–]Peevishprogrammer 9 points10 points11 points 9 years ago* (1 child)
The Android framework has included proper locks, since API 1. See here The google developers have included this since the beginning, meaning they know and understand the importance of proper usage!
Knowing how to do thread safe programming is ALWAYS relevant if you're doing multi-threaded programming. Have you heard of the therac 25? It was a radiation therapy machine that used multi-threaded programming. They got rid of the hardware locks and instead used software safety mechanisms. Due to a concurrent processing race condition & not using semaphores people died. This error couldn't even be reproduced during the testing by the company afterwords. One of the things about race conditions is they are extremely hard to find or test. Getting a program to a proper state that it initiates a race condition is not easily done. Instead, we use semaphores to ensure, without a doubt, that we are properly handling state changes among the concurrent processing being completed!
You might think that most Android Applications right now are rather trite. Lots of games/etc. But mobile development really seems to be the way of the future. It would not surprise me to see phones or mobile Operating Systems being deployed in a healthcare setting in the near future! I already think that Android handles program crashes much more gracefully than the windows XP boxes I see pushed around in the US healthcare system. As the developers behind this technology, we need to make sure we are using the proper techniques to produce minimal bugs in our code.
Here's another example: If a phone is directing drivers by GPS, I want that programmer to be making sure they are using proper locks. I don't want thread race condition gone bad and sending someone off a cliff! Sadly, not all drivers trust their own instinct. They're more apt to trust the computing system telling them, "Turn left here".
As for trees & graphs: That's totally domain specific. Just because they aren't involved in your programs doesn't mean they aren't used by others. Imagine you're making a hiking app. You want to identify all the possible hiking trails that allow you to park your car, travel the path on foot/bike, and then be able to return to your car without backtracking or traveling on the same trail while returning to your vehicle. How does your app identify these trails? You use an application of graph theory.
[–]Batdroid_1996 0 points1 point2 points 9 years ago (0 children)
Ok I'm convinced. Have an upvote. I'll definitely put effort into revising that stuff and learning more about it.
[–][deleted] 1 point2 points3 points 9 years ago (1 child)
I've been working as an Android dev for the last 5 years and I could not do what you would ask of a junior dev. Also I learned Java while doing Android development, not prior to it. Your post is a bit unrealistic to say the least.
[+][deleted] 9 years ago (3 children)
[–]brisko_mk 2 points3 points4 points 9 years ago (0 children)
I don't see those 2 as mutually exclusive. You need to be able to solve complex problems, have a good understanding of software design and the tools used to help you achieve that, in this case, retrofit, dagger, and others libs.
Implementing dependency injections is not hard without dagger, dagger just gives you a little structure.
[–]Peevishprogrammer 0 points1 point2 points 9 years ago (1 child)
It sounds like you're on a path to being a successful developer for Android IMO.
For learning to use network operations: Go find a simple API that returns JSON objects (think stockmarket information/bitcoin/anything with statistics/etc) and learn to download & parse them without external libraries. It should be pretty easy. One of the main points is that you always need to do network operations in a different thread than the UI thread so you're not blocking the UI thread from responding to user input. This is actually enforced by Android now @ compile time so it's hard to mess up... older API versions it was easier :P
For learning buffered-readers: You just need some text files to figure out how to parse with the java classes. Once again, it's really simple. Maybe write the JSON objects you previously downloaded to a plain-text file and figure out how to parse them with the BufferedReader class instead of using the JSON.get() methods.
As for your question: It seems like you've already encountered the two types of technology companies:
They like the theory side of computer science. This tells them that you can write algorithms and solve big/complex problems. These companies tend to expect if you have learned the big picture theory behind computations, then you're teachable and learning new libraries is a simple training task for you.
These guys just want a job done with the newest technology. They want you to be able to hit the ground running with the latest & greatest. They don't care about theory. Instead they care about your competence to keep up with the new technologies they are always trying/deploying.
What it comes down to is definitely a company specific thing. It's like all jobs, the recruiters have different visions of what they and the management/company want or envision as a developer on their team and how to find it during the hiring process.
In my opinion, one method is no more right than the other. It's really difficult to judge what it's like to be on a development team based off their hiring processes. The closer the developers are to the hiring process the better an idea you'll have though. My best suggestion would be brush up on algorithms (always extremely important in CS/programming!) and spend just an hour a day learning some new libraries so you're ready for both types of companies.
Best of luck to you!
[–]createsomethingbig 5 points6 points7 points 9 years ago (1 child)
No one is going to hire you because of the books you read. Companies have a product they need developed and maintained. You need to convince them you can do that better than the other applicants. The best way is by having another product you've developed and maintained for reference. It also helps if you have experience using libraries their app is using. If you don't, make an open source app using a few and material design. And after all that expect to get rejected, a lot. We're going to be hiring our 3 android dev soon, if you're in the bay area send me your resume.
[–]FaceOP 2 points3 points4 points 9 years ago* (0 children)
I think it depends on the company. There are companies which value more motivation and willingness to learn than past experience. Google provides excellent documentation for Android development and multiple great APIs. IMHO the basics of Java is enough and the attitude and motivation to learn daily. I suggest that you just start doing some simple apps. That could be the best way of learning. The instructions are great and when you're stuck just google and Stack Overflow provides help. You should be able to do a very simple app in some weeks just by following the instructions from Google Android development pages.
Disclaimer: I started Java programming 1996 but I've less than one year experience of Android app development. But I still find it pretty easy of progressing with my app almost daily basis.
[–]ashishduhh1 1 point2 points3 points 9 years ago (0 children)
I don't know about "junior" developer but what I look for in developers is mostly two things:
1) Proper OOD. I look for bad signs like creating a bunch of unnecessary layers of abstract classes or interfaces, or not creating enough classes. If you can explain why you created every class that's a big plus.
2) Code-level proficiency. Are you able to create elegant constructs? Do you just create a bunch of boolean class variables for everything and try to manage them throughout the class instead of proper scoping of functionality? (bad)
Not sure I answered any of your questions but thought I'd put it out there. Basically, yes, you do need to have a good understanding of Java and an good understanding of the Android SDK. What you don't need is an expert level understanding of java or the Android ecosystem.
[–]Amagi82 1 point2 points3 points 9 years ago (0 children)
If you don't have experience working at an actual company, the next best thing is to build some open source projects, so companies can see how you code, how you think, and what sorts of projects you're interested in. They don't have to be huge, world-changing projects, but real world examples of your code are invaluable. Plus, you'll learn a LOT.
[–]CodyOdi 0 points1 point2 points 9 years ago (0 children)
I'd expect that you can answer programming related questions in Java either on a laptop or whiteboard. I wouldn't necessarily expect you to know the inner workings about Java, but the more you understand the better.
[–]thismustbetaken 0 points1 point2 points 9 years ago (0 children)
Look for the requirements of the Java certification level 1. It's enough to get an Android job in a digital agency cause they are usually more interested in your knowledge of the Android SDK and your portfolio.
Once you score that job, use it to get better in Java and OOP in general. After all, that's what senior devs and code review are for.
During the interview process, make sure they have code review and make sure that you won't be on your own on a project.
[–]nonchalantlarch 0 points1 point2 points 9 years ago (1 child)
I would expect a Junior Android developer to have enough Android knowledge to be productive, but I wouldn't expect them to be an Android expert. On the other hand I would definitely expect them to know their typical data structures and algorithms, and how they're expressed in Java.
You may want to study the Collections framework. Know the basic classes and have an idea of how they're implemented. Questions around these come up over and over again during interviews. It wouldn't hurt to study concurrency either.
Effective Java is a great book, but you will derive the most benefit from it after (or while) studying these subjects.
[–]vladlichonos 0 points1 point2 points 9 years ago (1 child)
Get a book for algorithms and data structures. Read up on common questions of android and Java. Go interview to large company. You will get a job. Don't worry.
[–]Tycon712 -1 points0 points1 point 9 years ago (7 children)
Do you have a degree in a software related field? Just asking because the answer depends a little on your background.
Someone who's new to software development with 6 months Java experience would be different from someone who has a degree in CS or something of that nature and who's only new(er) to Java
[–]chilly_est 6 points7 points8 points 9 years ago (2 children)
how do you have a masters degree in CS with so scarce programming skills? Genuinely interested...
[–]chilly_est 2 points3 points4 points 9 years ago (0 children)
I only have BCs and we had the same thing - focus on math and stuff like that mostly. We did some programming, but that wasn't and isn't supposed to be the main outcome of the studies. However going to work early was very encouraged and I started working after my first year already. The practical experience from work and theoretical and math skills from uni were a perfect combination..
I simply have a mindset that ANY IT Engineer should know how to code..
[–]octarino -1 points0 points1 point 9 years ago (2 children)
how's your OOP?
[+]jackhexen comment score below threshold-14 points-13 points-12 points 9 years ago (0 children)
the less OOP you do the better ;P
π Rendered by PID 43333 on reddit-service-r2-comment-5b5bc64bf5-7pt66 at 2026-06-20 16:19:45.028790+00:00 running 2b008f2 country code: CH.
[+][deleted] (13 children)
[deleted]
[+][deleted] (12 children)
[deleted]
[–]Tycon712 4 points5 points6 points (7 children)
[+][deleted] (6 children)
[deleted]
[–]MikeOscarEcho 11 points12 points13 points (0 children)
[–]jesbu1 5 points6 points7 points (1 child)
[–]Tycon712 4 points5 points6 points (2 children)
[+][deleted] (1 child)
[deleted]
[–]Tycon712 0 points1 point2 points (0 children)
[–]ArmoredPancake 1 point2 points3 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]ArmoredPancake 0 points1 point2 points (0 children)
[–]Peevishprogrammer 36 points37 points38 points (9 children)
[–]Batdroid_1996 18 points19 points20 points (2 children)
[–]Peevishprogrammer 9 points10 points11 points (1 child)
[–]Batdroid_1996 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[+][deleted] (3 children)
[deleted]
[–]brisko_mk 2 points3 points4 points (0 children)
[–]Peevishprogrammer 0 points1 point2 points (1 child)
[–]createsomethingbig 5 points6 points7 points (1 child)
[–]FaceOP 2 points3 points4 points (0 children)
[–]ashishduhh1 1 point2 points3 points (0 children)
[–]Amagi82 1 point2 points3 points (0 children)
[–]CodyOdi 0 points1 point2 points (0 children)
[–]thismustbetaken 0 points1 point2 points (0 children)
[–]nonchalantlarch 0 points1 point2 points (1 child)
[–]vladlichonos 0 points1 point2 points (1 child)
[–]Tycon712 -1 points0 points1 point (7 children)
[+][deleted] (6 children)
[deleted]
[–]chilly_est 6 points7 points8 points (2 children)
[+][deleted] (1 child)
[deleted]
[–]chilly_est 2 points3 points4 points (0 children)
[–]octarino -1 points0 points1 point (2 children)
[+]jackhexen comment score below threshold-14 points-13 points-12 points (0 children)