The Android codebase uses a highly modified notation that isn't strictly "Hungarian".
This notation is highly influenced by the entire Google codebase, in all languages, almost all of which contains domain-specific Hungarian-style notation. Code reviews at Google pretty much require this1, and there is a ripple effect to the public codebases.
why would Google advise us to use the m
notation
Because this is their coding standard. When you have large codebases across many APIs shared by literally thousands of coders, you need standards. Google have decided that marking up their code in this manner leads to better and easier to maintain code.
Not everyone agrees, but every shop has its own rules you have to follow. As someone commented earlier, you often don't see this at Java shops. Though, you certainly do see it in Java at Google.
As for why to annotate your code at all in this manner, there are lots of links in the comments. But, at the end of the day, it is about code maintainability (and readability is a major part of that) and an effort to keep bugs from creeping in as the code is changed.
why do people follow that advice even when no-one explains why you should?
Well, open source projects are uneven in how they introduce new people to their processes and workflows. If you were working at Google, you would get a mentor who would shadow you and check all your code prior to acceptance, and this process would introduce you to all the things you would be expected to do as a coder. This includes following coding standards. If you had to ask why, you could ask your co-workers.
Open source public facing libraries and APIs are managed differently, and also have a different way of introducing you to their specific coding practices. In this case, my guess is that pushing code that doesn't follow a standard required by the "community" would cause the push to be annotated and flipped back to you for further grooming. Thus, you would learn.
1 Citation: me, and the chats I've had with colleagues that work for Google