Android Performance: Avoid using ENUM on Android



What and why we use ENUM?

Enum in java is a data type that contains fixed set of constants. When we required predefined set of values which represents some kind of data, we use ENUM. We always use Enums when a variable can only take one out of a small set of possible values. For example:

public enum Season
{
  WINTER, SPRING, SUMMER, FALL
}

Instead of using Integer or String constants, we generally use ENUM to increase compile time checking and avoid errors from passing in invalid constants.


Drawback of using ENUM

Each value in an ENUM is an object and each declaration will take some runtime memory simply to reference the object. So ENUM values will take more memory then Integer or String constant. Even in old android devices (<=2.2), there were some performance issue related to ENUM which were solved in JIT compiler.

Adding a single ENUM will increase the size (13x times than the Integer constant) of final DEX file. It also generates the problem of runtime overhead and your app will required more space.

So overuse of ENUM in Android would increase DEX size and increase runtime memory allocation size.

If your application is using more ENUM then better to use Integer or String constants instead of ENUM. But still problem remains…


Solution

Android provide annotation library which has TypeDef annotations. These annotations ensure that a particular parameter, return value, or field references a specific set of constants. They also enable code completion to automatically offer the allowed constants.

IntDef and StringDef are two Magic Constant Annotation which can be used instead of Enum. These annotation will help us to check variable assignment like Enum in compile time.


How to use?

Let’s take a simple example to understand the use. Below are code snippet of a ConstantSeason class.

public class ConstantSeason {
    public static final int WINTER = 0;
    public static final int SPRING = 1;
    public static final int SUMMER = 2;
    public static final int FALL = 3;

    public ConstantSeason(int season) {
        System.out.println("Season :" + season);
    }

    public static void main(String[] args) {
        // Here chance to paas invalid value
        ConstantSeason constantSeason = new ConstantSeason(5);
    }
}

Unfortunately, there is no guarantee that the user will use the constructor with proper values - there is no type safety here.

Also the similar implementation using ENUM would be:

public class EnumSeason {

    public EnumSeason(Season season) {
        System.out.println("Season :" + season);
    }

    public enum Season {
        WINTER, SPRING, SUMMER, FALL
    }

    public static void main(String[] args) {
        EnumSeason enumSeason = new EnumSeason(Season.SPRING);
    }
}

Now let’s look how to use magic constants from support-annotations.

Add the support-annotations dependency to your project by putting the following line in the dependencies block of your build.gradle file:

 dependencies { compile 'com.android.support:support-annotations:24.2.0' }

Declare the constants and @IntDef for these constants:

// Constants
public static final int WINTER = 0;
public static final int SPRING = 1;
public static final int SUMMER = 2;
public static final int FALL = 3;

// Declare the @IntDef for these constants
@IntDef({WINTER, SPRING, SUMMER, FALL})
@Retention(RetentionPolicy.SOURCE)
public @interface Season {}


Here Typedef annotations use @interface to declare the new enumerated annotation type. The @IntDef and @StringDef annotations, along with @Retention, annotate the new annotation and are necessary in order to define the enumerated type. The @Retention(RetentionPolicy.SOURCE) annotation tells the compiler not to store the enumerated annotation data in the .class file.
So implementation of above example would be:

public class AnnotationSeason {

    public static final int WINTER = 0;
    public static final int SPRING = 1;
    public static final int SUMMER = 2;
    public static final int FALL = 3;

    public AnnotationSeason(@Season int season) {
        System.out.println("Season :" + season);
    }

    @IntDef({WINTER, SPRING, SUMMER, FALL})
    @Retention(RetentionPolicy.SOURCE)
    public @interface Season {
    }

    public static void main(String[] args) {
        AnnotationSeason annotationSeason = new AnnotationSeason(SPRING);
    }
}


Now if we pass different value in the constructor while create the instance of AnnotationSeason other than Season, compiler will give error.

@StringDef can be used in same manner.

// Constants
public static final String WINTER = "Winter";
public static final String SPRING = "Spring";
public static final String SUMMER = "Summer";
public static final String FALL = "Fall";

// Declare the @ StringDef for these constants:
@ StringDef ({WINTER, SPRING, SUMMER, FALL})
@Retention(RetentionPolicy.SOURCE)
public @interface Season {}

Below is android performance patterns video about price of Enum.


Conclusion

Enums add at least two times more bytes to the total APK size than plain constants and can use 5 to 10 times more RAM memory than equivalent constants. This is a best practice advice and performance matters of application.
You can learn more about support annotation library here. 



To find more interesting topics on Software development follow me.



Comments

  1. really nice blog has been shared by you. before i read this blog i didn't have any knowledge about this but now i got some knowledge about this. so keep on sharing such kind of an interesting blogs.
    java training in chennai

    ReplyDelete
  2. nice write up. How to Disable Youtube Annotations Permanently by default.

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Thank you for sharing your information. I really appreciate your efforts and I am waiting for your further post thanks once again.
    Regards,
    Java Training in Hyderabad
    Java online Training in Hyderabad
    Java Training in India
    Java online Training in India

    ReplyDelete
  5. Thank you for sharing very Nice information Android Online Training

    ReplyDelete
  6. That is very interesting; you are a very skilled blogger. I have shared your website in my social networks! A very nice guide. I will definitely follow these tips. Thank you for sharing such detailed article.

    Android Online Training

    ReplyDelete
  7. The great service in this blog and the nice technology is visible in this blog. I am really very happy for the nice approach is visible in this blog and thank you very much for using the nice technology in this blog

    Android Online Training

    ReplyDelete
  8. Iam relly happy to read this blog. This blog contain fully technique oriented concepts. I think you are really a skilled blogger.Thanks for sharing.keep sharing more blogs.Anybody want to learn Android Training in Chennai.


    Android Training in Chennai

    ReplyDelete
  9. Wonderful post.This is really one of the most beneficial blogs I’ve ever browsed on this subject. I am very glad to read such a great blog ..
    Android Training in Chennai | Salesforce Training in Chennai

    ReplyDelete
  10. Excellent post!!! Training on android technology helps professionals to establish a career in android mobile application development. Android Training in Chennai | Android Training|Best Android Training institute in Chennai

    ReplyDelete
  11. Overall gained good experience and knowledge thought of taking Android Course in Chennai after reading your blog. I took the classes on weekdays. It was very helpful for me to understand all the concepts in detail.

    ReplyDelete
  12. Nice information android development, check it once through Android Online Training for more info.

    ReplyDelete
  13. Thanks for information.
    We are Netguru Solution India Pvt Ltd, one of the leading and developing Website Design and Mobile Application Development Company in Pune with a specialist management and expert group.
    Website Design Company In Pune
    Mobile Application Development Company In Pune

    ReplyDelete
  14. That's wonderful stuff you've written up here. Been searching for it all around. Great blogWeb Designing Company Bangalore | Website Design Company Bangalore

    ReplyDelete
  15. Android Training in Delhi | Android Corporate Training Delhi
    http://www.ssdntech.com/android-training-institute.aspx

    ReplyDelete
  16. Thanks for shearing such an informative blog with us. it is really helpful information that how someone can save his site.
    SEO Experts India
    SEO Agencies Bangalore
    Best Affordable SEO Packages In bangalore

    ReplyDelete
  17. Thanks for sharing. Keep sharing

    ReplyDelete
  18. Very nice information.Special thanks for this. You can also read as: Android training in india

    ReplyDelete

  19. It was so good to read and useful to improve my knowledge as updated one.Thanks to Sharing.
    ETL Testing Online Training
    Hadoop online Training
    Informatica Online Training

    ReplyDelete
  20. You've made some good points there. I looked on the internet for more information about this
    Mainframe Training In Chennai | Hadoop Training In Chennai | ETL Testing Training In Chennai

    ReplyDelete

  21. I wish to show thanks to you just for bailing me out of this particular trouble.As a result of checking through the net and meeting techniques that were not productive, I thought my life was done.
    Advanced Selenium Training in Chennai

    ReplyDelete
  22. Hi,
    Java today is one of the most popular digital applications in web designing & is being preferred by the layman as well as high end users for different purposes such as in flash video application, 3-D gaming, complex software development etc. So students, java developers, and technical recruiters are producing their own application using java platform. But if your basic java knowledge is not strong then you would not be able to develop your unique application and hence flourishing in the ever growing & expanding IT industry would become impossible.check the best Android classes in pune

    ReplyDelete
  23. simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.


    Best Java Training Institute Chennai

    ReplyDelete
  24. I feel really happy to have seen your webpage and look forward to so many more entertaining times reading here. Thanks once more for all the details.
    Best Java Training Institute Chennai

    ReplyDelete
  25. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    Hadoop Training Institute In chennai

    amazon-web-services-training-institute-in-chennai

    ReplyDelete
  26. Needed to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.

    Best RPA Training in Chennai

    Best RPA Training in Bangalore

    ReplyDelete
  27. Needed to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.
    selenium training in chennai

    ReplyDelete
  28. Thanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.

    RPA Training in Bangalore

    ReplyDelete
  29. Really it was an awesome article...very interesting to read..
    Thanks for sharing
    Best Software Training Centre in Chennai | Software Training Centre in Chennai

    ReplyDelete
  30. I really enjoy the blog.Much thanks again. Really Great selenium Online Training Hyderabad

    ReplyDelete
  31. Wow, you are good narrator, I am planning for same trip , so it was helpful for me!!!! Thanks alot, You are quite passionate and daring ....live a lot
    JAVA Training in Chennai
    JAVA Course in Chennai

    ReplyDelete
  32. Your new valuable key points imply much a person like me and extremely more to my office workers. With thanks; from every one of us.
    AWS Online Training

    ReplyDelete
  33. Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.
    Devops training in velachry
    Devops training in OMR
    Deops training in annanagar
    Devops training in chennai
    Devops training in marathahalli
    Devops training in rajajinagar
    Devops training in BTM Layout


    ReplyDelete
  34. This is a nice article here with some useful tips for those who are not used-to comment that frequently. Thanks for this helpful information I agree with all points you have given to us. I will follow all of them.


    MEAN stack training in Chennai

    MEAN stack training in bangalore

    MEAN stack training in tambaram

    MEAN stack training in annanagar

    MEAN stack training in Velachery

    MEAN stack training Sholinganallur

    ReplyDelete
  35. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
    Devops Training in pune|Devops training in tambaram|Devops training in velachery|Devops training in annanagar
    DevOps online Training

    ReplyDelete
  36. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.

    rpa training in Chennai | rpa training in pune

    rpa training in tambaram | rpa training in sholinganallur

    rpa training in Chennai | rpa training in velachery

    rpa online training | rpa training in bangalore

    ReplyDelete
  37. After reading this web site I am very satisfied simply because this site is providing comprehensive knowledge for you to audience. Thank you to the perform as well as discuss anything incredibly important in my opinion. We loose time waiting for your next article writing in addition to I beg one to get back to pay a visit to our website in
    python training institute in chennai
    python training in velachery
    python training institute in chennai


    ReplyDelete
  38. All the points you described so beautiful. Every time i read your i blog and i am so surprised that how you can write so well.

    java online training | java training in pune

    ReplyDelete
  39. UiPath Training in Bangalore by myTectra is one the best UiPath Training. myTectra is the market leader in providing Robotic Process Automation on UiPath
    ui path training in bangalore

    ReplyDelete
  40. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...


    Selenium online Training | Selenium Training in Pune | Selenium Training in Bangalore

    ReplyDelete
  41. I found this informative and interesting blog so i think so its very useful and knowledge able.I would like to thank you for the efforts you have made in writing this article.

    angularjs Training in chennai
    angularjs Training in chennai

    angularjs-Training in tambaram

    angularjs-Training in sholinganallur

    angularjs-Training in velachery

    ReplyDelete
  42. Thank you for sharing such great information with us. I really appreciate everything that you’ve done here and am glad to know that you really care about the world that we live in

    angularjs Training in chennai
    angularjs Training in chennai

    angularjs-Training in tambaram

    angularjs-Training in sholinganallur

    angularjs-Training in velachery

    ReplyDelete
  43. It has been simply incredibly generous with you to provide openly what exactly many individuals would’ve marketed for an eBook to end up making some cash for their end, primarily given that you could have tried it in the event you wanted.
    nebosh course in chennai

    ReplyDelete
  44. When I initially commented, I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get several emails with the same comment. Is there any way you can remove people from that service? Thanks.

    AWS Interview Questions And Answers

    AWS Training in Chennai | Best AWS Training in Chennai

    AWS Training in Pune | Best Amazon Web Services Training in Pune

    ReplyDelete
  45. When I initially commented, I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get several emails with the same comment. Is there any way you can remove people from that service? Thanks.

    AWS Interview Questions And Answers

    AWS Training in Chennai | Best AWS Training in Chennai

    AWS Training in Pune | Best Amazon Web Services Training in Pune

    ReplyDelete
  46. Thanks for sharing this valuable information about Python with us, it is really helpful article!

    ReplyDelete
  47. Thanks for sharing this valuable information about Core Java with us, it is really helpful article!

    ReplyDelete
  48. Hi, I am a big follower of your blog. Really very informative post you shared here.Thanks for sharing.Keep in blogging... Warehouse Audit
    CA Firms
    Inventory Audit

    ReplyDelete
  49. Such an excellent and interesting blog, do post like this more with more information, this was very useful, Thank you.
    Aviation Academy in Chennai
    Aviation Courses in Chennai
    best aviation academy in chennai
    aviation training in chennai

    ReplyDelete
  50. Thanks for sharing this informative blog. I have read your blog and I gathered some valuable information from this blog. Keep posting.

    Education
    Technology

    ReplyDelete
  51. Best Core Java Training Course in Delhi, Noida and Gurgaon. High Technologies Solutions is the best Core Java Training Institute in Delhi, Noida and Gurgaon providing Core Java Training classes by real-time faculty with course material and 24x7 Lab Facility.

    More info- Core Java Training Course in Delhi, Noida and Gurgaon

    ReplyDelete
  52. She noticed a wide variety of pieces, with the inclusion of what it is like to have an awesome helping style to have the rest without hassle grasp some grueling matters.
    iosh safety course in chennai

    ReplyDelete
  53. Amazing article. Your blog helped me to improve myself in many ways thanks for sharing this kind of wonderful informative blogs in live. I have bookmarked more article from this website. Such a nice blog you are providing ! Kindly Visit Us @ Best Travels in Madurai | Tours and Travels in Madurai | Madurai Travels

    ReplyDelete

  54. Hey, would you mind if I share your blog with my twitter group? There’s a lot of folks that I think would enjoy your content. Please let me know. Thank you.
    AWS Training in Chennai
    Data Science Training in Chennai
    Python Training in Chennai
    RPA Training in Chennai
    Digital Marketing Training in Chennai

    ReplyDelete
  55. We the biggest photo editing, Background removal, Photo retouching services and Clipping path service provider. As images of products are the biggest weapon for a business company. Perfect Clipping path service means a lot to this professional business purpose. Do Visit to have more knowledge about unique service.

    ReplyDelete
  56. Amazing article. Your blog helped me to improve myself in many ways thanks for sharing this kind of wonderful informative blogs in live. I have bookmarked more article from this website. Such a nice blog you are providing ! Kindly Visit Us @ Best Travels in Madurai | Tours and Travels in Madurai | Madurai Travels

    ReplyDelete
  57. Thanks for sharing this information. I really Like Very Much.
    online training institute

    ReplyDelete

  58. Thank you so much for letting me express my feeling about your post.
    You write every blog post so well. Keep the hard work going and good luck.
    Hope to see such beneficial post ahead to.
    One Machine Learning
    One data science

    ReplyDelete
  59. Thanks for sharing this post, it was great reading this article! would like to know more! keep in touch and stay connected! Also Check here
    Vidmate
    Vidmate Download
    Vidmate Apk
    Vidmate App

    ReplyDelete
  60. outsourcingall.com Most Poplar Free Porn Training Center largest The coolest Free Porn Videos & Sex Movies Updated Daily. Update is a tube porn site with millions Online and offline real life porn cam

    ReplyDelete

  61. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.
    One Machine Learning
    One data science
    Bissi.Global

    ReplyDelete
  62. Creative Banner is a focusing fact for any kinds of business institutions. Banner show your products identity which is provided by you. Manage your banner design service creatively by any professional designer to highlight your products. Cr eative banner grabs your customer’s attention.

    ReplyDelete
  63. We the BRS team which stands for Background Removal Services are providing you with highly graphic design and photo editing and obviously the most popular brand identity design at your cost. Do Visit to have the view of creative ideas of designs. Creative designs do help to grab the attraction of the customers. Make your own business flourish with powerful design concept today!

    ReplyDelete
  64. Thanks for sharing this information. I really Like Very Much.
    blockchain online training

    ReplyDelete
  65. I am really enjoying reading your well written articles . It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. keep it up the good work

    ReplyDelete
  66. Very Good & much Great. You are successful because you share all the Knowledge you know with others. That’s a Great sign! Good Luck
    to the Future AND thanks.www.bexteranutrition

    ReplyDelete
  67. Useful Information :

    Looking for the Best Digital Marketing Company in Vijayawada and Hyderabad affiliate agency in south INDIA, Digital Marketing in Vijayawada @ praiseads.com

    ReplyDelete
  68. Great Article:

    Looking for the Best Walkin Interview For Freshers , Find latest Govt Job Notifications with various information such as govt vacancies, eligibility, Bank Jobs, Latest Bank Job Updates @ pdtvjobs.com

    ReplyDelete
  69. Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man and Thanks for the post,Interesting stuff to read. Keep it up.
    i-love-you-images-for-Mom.html
    A programming site free learn

    ReplyDelete
  70. Useful Information :

    Looking for the Best Digital Marketing Company in Vijayawada and Hyderabad affiliate agency in south INDIA, Digital Marketing in Vijayawada @ praiseads.com

    ReplyDelete
  71. Useful Information :

    Freshers Walkins provide information on all the job walkins happen in all over India. Popular IT Company jobs, Freshers walkins, java walkins, .net walkins @ http://fresherswalkins.co.in/

    ReplyDelete
  72. Nice information thaanks for sharing love it like it
    Get meet with high Freelancer on fiverr.com for more please
    lead generation
    Targeted Email lsit
    Hindimei.net

    ReplyDelete
  73. Useful Information :

    Are you planning to Study Abroad? Visit Study Abroad Institute one of the most trusted study abroad consultants in India and let overseas education in UK, USA @ http://studyabroadinstitute.com/

    ReplyDelete
  74. Useful Information :

    New Job Alert , New Job Alert Updates - Create New Job Alert notification alerts for bank jobs, government jobs, IT jobs, fresher new job alerts.

    ReplyDelete
  75. Useful Information :

    New Job Alert , New Job Alert Updates - Create New Job Alert notification alerts for bank jobs, government jobs, IT jobs, fresher new job alerts.

    ReplyDelete
  76. Nice Information

    Freshers Walkins provide information on all the job walkins happen in all over India. Popular IT Company jobs, Freshers walkins, java walkins, .net walkins @ http://fresherswalkins.co.in/

    ReplyDelete
  77. Great Article. As I read the blog I felt a tug on the heartstrings. it exhibits how much effort has been put into this.
    IEEE Projects for CSE in Big Data

    Spring Framework Corporate TRaining

    Final Year Project Centers in Chennai

    JavaScript Training in Chennai

    ReplyDelete
  78. Great Article

    Looking for the Best Walkin Interview For Freshers , Find latest Govt Job Notifications with various information such as govt vacancies, eligibility, Bank Jobs, Latest Bank Job Updates @ pdtvjobs.com

    ReplyDelete
  79. Useful Information :

    New Job Alert , New Job Alert Updates - Create New Job Alert notification alerts for bank jobs, government jobs, IT jobs, fresher new job alerts.

    ReplyDelete
  80. Useful Information :

    Are you planning to Study Abroad? Visit Study Abroad Institute one of the most trusted study abroad consultants in India and let overseas education in UK, USA @ http://studyabroadinstitute.com/

    ReplyDelete
  81. Useful Information :

    New Job Alert , New Job Alert Updates - Create New Job Alert notification alerts for bank jobs, government jobs, IT jobs, fresher new job alerts.

    ReplyDelete
  82. Useful Information :

    Looking for the Best Digital Marketing Company in Vijayawada and Hyderabad affiliate agency in south INDIA, Digital Marketing in Vijayawada @ praiseads.com

    ReplyDelete
  83. Such a great information for blogger iam a professional blogger thanks…

    Upgrade your career Learn Oracle Training from industry experts gets complete hands on Training, Interview preparation, and Job Assistance at Softgen Infotech.

    ReplyDelete
  84. Useful Information :

    New Job Alert , New Job Alert Updates - Create New Job Alert notification alerts for bank jobs, government jobs, IT jobs, fresher new job alerts.

    ReplyDelete
  85. Great Article

    Looking for the Best Walkin Interview For Freshers , Find latest Govt Job Notifications with various information such as govt vacancies, eligibility, Bank Jobs, Latest Bank Job Updates @ pdtvjobs.com

    ReplyDelete
  86. Do you need a virtual assistant to complete your personal or administrative type of work? Here I am for providing various kinds of services like cleaning your email list and extracting email from file and also selling USA targeted company details and selling some paid software. You can check out my services at http://ow.ly/Y00I30qizKc

    ReplyDelete

  87. It is a very nice international detailed informative info thanks please visit taxi-driver Thanks For You Sharing.

    ReplyDelete
  88. Useful Information :

    Looking for Freshers Walkin interview and also Find Government Jobs Latest Bank Job Updates @ freshersworld.online

    ReplyDelete
  89. I have been searching for a useful post like this on salesforce course details, it is highly helpful for me and I have a great experience with this Salesforce Training who are providing certification and job assistance. Salesforce training Noida 

    ReplyDelete
  90. This comment has been removed by the author.

    ReplyDelete
  91. Thanks for this post. It proves very informative for me. Great post to read.

    If you are looking for the top security companies in London that provide its customer with remarkable security services. Check out this site for security services nightclub security services

    ReplyDelete
  92. Thanks for this post. It proves very informative for me. Great post to read.Keep Blogging.

    Looking for Roller blinds, Wooden blinds, Cheap blinds, or Curtains and Venetian blinds, and more, in Nottingham and surrounding areas like Derby, Mansfield, Leciester, East Midlands or Luton? Day Blinds offers superior window solutions at unmatched prices.Visit our site for Awnings Nottingham

    ReplyDelete
  93. Thanks for this post. It proves very informative for me. Great post to read. Keep blogging.

    If you are looking for the top security companies in London that provide its customer with remarkable security services. Check out this site for security services and security guard agency in London

    ReplyDelete
  94. Thanks for this post. It proves very informative for me. Great post to read. Keep blogging.

    Looking for Roller blinds, Wooden blinds, Cheap blinds, or Curtains and Venetian blinds, and more, in Nottingham and surrounding areas like Derby, Mansfield, Leciester, East Midlands or Luton? Day Blinds offers superior window solutions at unmatched prices.Visit our site for Roller blinds Nottingham

    ReplyDelete
  95. Thanks for sharing your innovative ideas to our vision. I have read your blog and I gathered some new information through your blog. Your blog is really very informative and unique. Keep posting like this. Awaiting for your further update.
    Web Designing Training in Chennai

    Web Designing Course in Chennai

    Web Designing Training in Bangalore

    Web Designing Course in Bangalore

    Web Designing Training in Hyderabad

    Web Designing Course in Hyderabad

    Web Designing Training in Coimbatore

    Web Designing Training

    Web Designing Online Training

    ReplyDelete
  96. It's really a nice and useful piece of information. I am satisfied that you shared this helpful info with us. Please stay us up to date like this. Thanks for sharing.

    If you are looking for the top security companies in London that provide its customer with remarkable security services. Check out our site for security services and Security Patrols in London.We can help.

    ReplyDelete

Post a comment

Popular posts from this blog

Android O: Impact On Running Apps And Developer Viewpoint

Local Broadcast, less overhead and secure in Android