ANDROID_ programming specifications and common techniques

Source: Internet
Author: User

One, the Android code specificationChinese is not present in 1.java code, the maximum number of comments can appear in Chinese2. Local variable naming, static member variable naming

Can only contain letters, the first letter of a word, all uppercase, the other letters are lowercase

3. Constant naming

Can only contain letters and _, all uppercase letters, between words separated by _

name of the ID in 4.layout

Named mode: The logical name of the view abbreviation _ Module name _view

The details of view abbreviations are as follows

Layoutview:lv

Relativeview:rv

Textview:tv

Imageview:iv

Imagebutton:im

Button:btn

name of view variable in 5.activity

Named mode: logical name +view abbreviation

Recommendation: If the layout file is complex, it is recommended that layout be divided into modules, each of which defines a moduleviewholder whose member variables contain the view

name of ID in 6.strings.xml

Naming pattern: Activity Name _ Function Module Name _ Logical name/activity name _ logical name/common_ logical name

Strings.xml, use activity name comments to separate the contents of the file

picture naming in 7.drawable

Naming pattern: Activity Name _ logical name/common_ logical name

8.styles.xml: The continuous style of layout is extracted from the common style generic components, put into the styles.xml;9. Using Layer-list and selector10. Image as many reusable pictures as possible11. The server can be implemented, do not put on the client12. Refer to third-party libraries be cautious, avoid the application of large-capacity third-party libraries, resulting in a very large client package13. Handle the application of global exceptions and errors and send errors to the server by mail14.9 Processing of pictures.15. Use static variable mode to realize the sharing between interfaces be careful16.Log (System name Module name Interface name, detailed description)17. Unit Test (logic test, interface test)18. Do not reuse the handler of the parent class, the handler of a class should not be used for its subclasses, or it will cause message.what conflictshandle all logic in a view.onclicklistener in 19.activityusing%1 $ s in 20.strings.xml to implement string wildcard21. If more than one activity contains common UI processing, you can refine a commonactivity, call the generic part to handle it, and other activity just inherit it22. When using Button+activitgroup to achieve the tab effect, use button.setselected (true) to ensure that the button is selected, and causes the current activity of the activitygroup to correspond to the button23. If you are developing a generic component, to avoid conflicts, add a prefix to the file name in the Drawable/layout/menu/values directory24. Data must be tested, such as

The character type turns the numeral type, if the conversion fails must have the default value;

Whether the service-side response data is effectively judged;

25. If the same client is to be placed in a different market, and to be counted in each market to download and use data

For different clients to play different packages, the only difference is that the versionname,apk file name is versionname.apk

In the upgrade, you want to send their own versioncode and versionname to the server, if you need to upgrade, download the versionname corresponding apk

About whether you want to force an upgrade:

1). Forced escalation in any situation

2). Determine the user's version and current version, if the compatibility is forced to upgrade, otherwise optional;

26. There are buttons to avoid repeated clicksSecond, Android performance optimization1.http with gzip compression, set the connection time-out and response timeout

The HTTP request is divided into whether it can be cached and not cacheable according to the business demand, then, in the network-free environment, the cached HttpResponse is still used to browse some data and realize offline reading.

2.listview Performance Optimization1) Multiplexing Convertview

In Getitemview, determine if the Convertview is empty, and if it is not empty, it can be reused. If the view in Couvertview needs to add Listerner, the code must be outside the if (Convertview==null) {}.

2) Loading pictures asynchronously

If the item contains Webimage, it is best to load asynchronously

3) Do not display pictures when sliding quickly

When a quick slide list (scroll_state_fling), the picture in item or the view that needs to consume resources, can not be displayed, but in the other two states (Scroll_state_idle and Scroll_state_touch_ SCROLL), the view is displayed

4) The list in the asynchronous loading of the picture, when not in the visual range, according to a certain algorithm in a timely manner (such as in the current visual range of 10 item other than the image to recycle, or to cache the picture, set a size, according to the least recently used principle more than part of the recycling)5) Baseadapter Avoid memory overflow

If the Baseadapter entity class has properties that consume very much memory, it can be saved to a file; For improved performance, you can cache and limit the cache size.

3. Use a thread pool, divided into core thread pool and normal thread pool, download pictures and other time-consuming tasks placed in the normal thread pool, to avoid time-consuming tasks blocking the thread pool, resulting in all asynchronous tasks must wait4. Asynchronous tasks, divided into core tasks and common tasks, only the core tasks in the system-level errors will be error, the UI operation of the asynchronous task needs to determine whether the original activity is active1) The main thread does not carry on the network processing;2) The main thread does not do database processing;3) The main thread does not file processing;5. Try to avoid the use of static member variables to reference resources that consume too many instances, such as context6. Using WeakReference instead of a strong reference, a weak reference allows you to keep a reference to the object while allowing the GC to release the object and reclaim memory if necessary. Consider using weak references for those objects that create inexpensive but expensive memory, want to keep the object, and use it when the application needs it, while you want the GC to be recycled as necessary. 7. Super Big Fat bitmap

Timely destruction (the activity of the OnDestroy will be bitmap recycled, after being used by the UI components immediately after the collection will throw RuntimeException:Canvas:trying to use a recycled bitmap ANDROID.GRAPHICS.BITMAP) Set a certain sample rate (the developer provides the picture without sampling, for the user upload or third-party size of the non-controllable picture, can be sampled to reduce the memory of the image), from the server to return pictures, it is recommended to feedback the size of the picture Clever use of soft reference drawable corresponding to Resid resources, bitmap corresponding to other resources of any type of picture, if not obtained (such as the file does not exist, or read the file run OutOfMemory exception), there should be a corresponding default picture (the default image is placed in the APK, acquired through Resid);

8. Ensure that the memory that the cursor occupies is released in a timely manner, rather than waiting for the GC to process. And Android is obviously prone to programmers manually close the cursor off9. Threading is also an important source of memory leaks. The main reason for a thread's memory leak is that the thread life cycle is not controllable10. If the picture of ImageView is from the network, it is loaded asynchronously11. In the application development of Custom view, the interactive part, do not write thread constantly refresh the interface display, but based on the Touchlistener event active trigger interface update12.Drawable

The image that the UI component needs to use is the APK package, so use Setimageresource or Setbackgroundresource instead of the ResourceID

Note: Get (Getresources (), R.drawable.btn_achievement_normal) This method is converted to drawable by RESID, you need to consider the issue of recycling, if drawable is an object private object, The memory is definitely not freed until the object is destroyed.

13. Reusing and recovering activity objects

Temporary activity in time finish

The main interface is set to Singletask

General interface set to Singletop

14. Location Information

When you get the user's geo-location information, turn on the GPS when you need to get the data, and then shut down

15. Set the power management of the interface when Onresume, and cancel the setting when OnPausethird, Androidui optimization1.layout Modular, use merge and include reuse as much as possible2. Using styles, reusing style definitions3. Soft keyboard pop-up control, do not let it overwrite the input box4. Number, letter, and character mix placeholder problem: Full-width of numbers and letters. Since most of the time our input is half-width, the placeholder for letters and numbers cannot be determined, but once full-width, the digits and the letters occupy the same position as a Chinese character, which avoids the typographical problems caused by the occupying position. 5. English document typesetting: TextView to maintain the integrity of the word when it wraps, the solution is to calculate the length of the string, and then manually set how many letters each line displays and add ' \ n '6. Complex layout using Relativelayout7. Adaptive screen, using DP instead of PIX8. Use Android:layout_weight or tablelayout to make distribution Bureau9. Animating effects with Animation-list

ANDROID_ programming specifications and common techniques

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.