Winter has to

The past decade is the golden period of mobile Internet’s vigorous development, and IT is believed that everyone has also enjoyed the bonus of mobile Internet. During this period, mobile Internet has experienced the dawn period, growth period, maturity period, and now has entered the saturation period. I still remember that from 2010 to 2013, mobile development was very popular. The salary of developers with 1-2 years of experience was basically tens of thousands, and the requirements for professional quality of the recruited people were not high, so the entry level was enough.

But since the end of 2016, but a different story, excessive saturated mobile development market, the market is flooded with too much junior developers, began circulating online “cold winter” of the mobile Internet, many people began to find to find a job not good, some jobs are often faced with only picture, not a three to five years of experience, Now HR is all brush over.

Is there still room for mobile development, Android or IOS, in the future? And as mobile development more and more to the big front, even some originally belong to the original developers of post front-end developer, think in the crowded room originally, also had their own segmentation point space for others, became more crowded, that taste is bad, so in the future we place and where is it?

An impasse or an opportunity

The author has been engaged in mobile development since the end of 2013, and just graduated, so he is still engaged in server-side development, writing the code of **.NET** technology stack. So far, he has nearly 5 years of experience. I want to say, if you just stay on the surface of the framework, just stay on the use of other people’s wheels, and for the inside of the implementation mechanism and principle of the words, it is easy to be eliminated.

However, if you have in-depth skills in mobile development, for example, in Android, you have certain unique insights on mobile architecture, certain attainments in performance optimization, a clear understanding of the Android system, and have accumulated rich industry experience in an industry, which are also highlights. So basically going job hunting is a very sought-after type. To put it simply, the “cold winter” is a natural evolution of the Android market.

For a concept can not stay at the level of use, to in-depth study how the inside structure, why there is such a concept, if there is no such concept, what kind of situation will be presented? Development programming, too, is to pursue the way of programming, rather than the art of programming, don’t look at all kinds of popular frameworks is popular now, if further research, peel off layer after layer, you will be surprised the realization mechanism of the inside is not just several, set to set, only some open-source repository, encapsulation of the author or organization.

Based on the current performance of the market, I think the next big thing for all mobile developers is really: “senior developers with depth and breadth of technology”. What about a “senior developer” like this? My answer is: to be a lifelong learners, tracing its code to explore the way of the world which is constant, you will say again, which is a way, simple, for example, such as programming ideas, the commonly used design patterns, design principle, algorithm and data structure, the network communication mechanism, operating system, the principle of refactoring, architecture, etc.

I do Android development myself, and I think there are several directions for Android development to become a senior Android advanced developer, as follows:

The advanced way

Why think of writing this article, on the one hand this job needs a few days, just want to plan in the group in 2021 Android technical route, is simply is in what kind of level degree, our group is in what stage do projects with technology, in the coming year, technical project iteration how to walk, walk to what extent.

On the other hand, in the past few years of Android development, I have not properly planned my own technical route, and I want to seriously sort out the future path of progress. As we all know, Android technology system has always been huge. When we started to learn It, we basically started from one point to another. There was no overall concept of the system, and at the same time, we could not learn it. The vast majority of developers are from the application layer development, often do Framework layer on a shallow taste, has always been, do Android development there are two arguments, if it is to do application development, to the direction of application architecture development is more appropriate, if it is to do system layer development, often the bottom drive is more appropriate.

Pick a few points on the roadmap and talk briefly about some of your ideas.

Mobile architecture

Mobile architecture is one of the 2020 annual TOP5 topics mobile technology, which will realize the architecture is how fire, remember just began to learn Android, which is now so framework, then talk about architecture is more in the development of a service, such as multilayer architecture, presentation layer, business logic layer, data access layer three layer model, this is the simplest Android system is based on the event-driven response mechanism design of the single-page architecture, in fact, the same as the browser window page, the system has always a message polling listening mechanism, which event is triggered, the corresponding response code for processing, these processing operations are registered in the system in advance.

The earliest development Mode is basically based on the MVC Mode of Android system, Activity is basically similar to the function of Control, View and Mode are coupled with each other, and then evolved into the mainstream MVP and MVVM Mode, by the way, MVVM mode is actually in Microsoft WPF technology system proposed.

In order to facilitate learning and teaching, each technical point has sorted out the corresponding learning manual, friends in need canGet it for free here!

Performance optimization

Simply put, an APP needs to be concerned from three aspects: business function, logical interaction and performance response. If we were using an APP, often often caton, from time to time when the sliding collapse, some functional design is irregular, such as in the Web site has the breadcrumb click, such as tree level you have to in the mobile phone to make a similar tree level click load, isn’t that a bit is coming, I pull down, left on the slippery not right? Does it have to be a click? So what is the core of performance tuning? The pursuit of fast, stable, economical, small, pay attention to the lag, memory leaks and crashes, code quality and logic, installation package size four aspects.

Based on the advanced

We usually work in View of sliding conflict problems, through mastering the View actually work mechanism and the Android touch events system can be easily solved, common solution intercept with external and internal intercept method, based on horizontal sliding distance and subtraction of the vertical sliding distance is tell about sliding or slide up and down. There is also the need to develop gorgeous animation effects, so some of the properties of view animation and property animation must have a certain understanding. JNI and NDK development is also common, especially for some SDK projects, this part of the development process also need to master, the four components of Android working mechanism is actually the underlying application of Binder mechanism, we can learn about Binder from AIDL interface.

Development of language

This is the year of Kotlin. Kotlin really made a big splash after Google IO. Developers’ desire for efficiency is one of the biggest reasons why Kotlin is so popular, and it’s gaining momentum, with cross-platform ambitions giving more people a reason to use it. It is even more promising than Swift. Now that Kotlin has become a first-class citizen of the Android world, fully compatible with Java, there’s no reason not to embrace it.

Read the source code

For Android source code and reading a third-party library source code, can according to your interested type, select the corresponding source code library or module, give yourself an appointed time point, after watching the last have a flow diagram, which is the core class, what is the relationship between classes and between classes, what are the mechanisms of these open source code to achieve, use what thoughts, These points can finally be output through the article, I think output force input is a very good way to learn.

Study notes on other technical points are welcome on my websiteGithubIn the view!

conclusion

In general, technological development can promote social progress, liberate productive forces, and then improve people’s social production efficiency and create value. Technology landing is the need for business application scenarios, how to cooperate, is through each different business model to achieve. Finally, a technology needs to be closely combined with the specific use of business. If talking about business without technology seems empty, talking about technology without business seems partial theory, it is best to combine the two. It also requires that those of us who engaged in software developers in the pursuit of technical accumulation at the same time should pay attention to the accumulation of business, make business drive technology development, using technology to solve real business problems, in the technology accumulation, discern what is the same way, which is a fad, it’s need to practice a pair of critical.