I would really like to write more tips, tricks, and tutorial posts relating to Android, but I’ve been extremely busy on apps both professionally and personally, and I am also doing technical review on an Android dev book due out later this year. So, while I don’t have time to go in the level of depth I’d like to, I thought I could work on a post with a bunch of short pieces that could be written when I have a few free minutes here and there and save the longer posts that require a greater chunk of continuous focus for later.
This post talks about some challenges that you may run into early in your foray into Android development. There isn’t really any sense of order to these; they’re more-or-less a brain dump of issues I’ve experienced or seen that take seconds to solve if you know what you’re doing or hours if you don’t.OMG! The emulator is slow!There are two things to note here: the default AVDs tend to have limited resources and the devices you’re targeting are likely running with a different chipset than the computer you’re developing on.
The first limitation can be easily overcome; the second is a much bigger issue, particularly with Android 3.x and attempting to develop for Honeycomb tablets without actually having a Xoom, Asus Eee Pad Transformer, etc.
Currently, it’s not very feasible to develop a 3.x app without a tablet.Back to that first limitation: When creating a new AVD, you can specify hardware settings, which can dramatically improve performance. The most important setting is the device RAM size; I tend to want the emulator to be as fast as possible, relying on on-device testing for a sense of “real-world speed,” so I usually give my phone emulators 512MB of RAM. That’s the equivalent of most good smartphones from 2010. The 1.x AVDs seem to run fine on 256MB, so you can potentially drop to that if your machine is limited (the Motorola Droid/Milestone had 256MB of RAM as well).
You can also try upping the cache partition size (128MB is a good start) and the max VM application heap size (48 is plenty) for a minor improvement.LinearLayout mistakesLinearLayout is a very useful and very simple ViewGroup. It essentially puts one View after another either horizontally or vertically, depending on the orientation you have set. Set an orientation!LinearLayout defaults to horizontal, but you should always manually specify an orientation. It’s very easy to throw two Views in there and not see one because the first View is set to match_parent for width.
That said, LinearLayout also processes layouts linearly, which is what you’d expect, but that means that setting a child View to match_parent can leave no room for subsequent Views. If you aren’t seeing one of your Views in a LinearLayout, verify you’ve set the orientation and that none of the Views are taking up all the available space. Within a LinearLayout, you should generally rely on layout_weight to “grow” the View.
Here’s an example: The heights are set to 0, but both child Views have weights. The first has a weight of 2 and the second has a weight of 3. Out of a total of 5, the first is taking 2 (40%) and the second gets 3 (60%), so their heights will actually use that portion of the parent View’s space (if that View has a 100px height, the first child will be 40px tall). The weights are relative, so you can set whatever values make sense for you.
In this example, the second layout could have had a set height and no weight and the first could have had a weight of 1, which would have made the first take up all space that the second didn’t use.Stupid Android! It keeps restarting my Activity!The default behavior when a configuration change happens (e.g., orientation change, sliding out the keyboard, etc.) is to finish the current Activity and restart it with the new configuration.
If you’re not getting any dynamic data, such as loading content from the web, this means you probably don’t have to do any work to support configuration changes; however, if you are loading other data, you need to pass it between configuration changes. Fortunately, there’s already a great post on Faster screen orientation changes. Read it and remember that you should not pass anything via the config change methods that is tied to the Activity or Context.DensityDensity should only be considered in terms of density not size. In other words, don’t decide that MDPI means 320px wide. It doesn’t.
It means that the device has around 160dpi like the G1 (320px wide) and the Xoom (1280px wide). Fortunately, you can combine multiple qualifiers for your folders to give precise control, so you can have a drawable-large-land-hdpi/ containing only drawables that are used on large HDPI devices that are in landscape orientation.One other important thing to note: Support for different screen sizes and densities came in Android 1.6. Android 1.5 devices are all MDPI devices, but they don’t know to look in drawable-mdpi/ because there were no different densities then.
So, if you’re supporting Android 1.5, your MDPI drawables should go in drawables/. If your minSdkVersion is 1.6 or above, put the MDPI drawables in drawable-mdpi/.What the heck is ListView doing?A full explanation of ListView would take quite a while, but here’s a quick summary: A ListView’s associated Adapter’s getView method is called for each child View it needs to construct to fill the ListView.
If you scroll down, the top View that leaves the screen is not garbage collected but is instead passed back to the getView method as the “convertView” (second param). Use this View! If you don’t, not only does it need to be garbage collected, you have to inflate new Views. You should also use the ViewHolder paradigm where you use a simple class to store View references to avoid constant findViewById() calls.
Here’s an example:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{ final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.some_layout, null);
holder = new ViewHolder();
holder.thumbnail = (ImageView) convertView.findViewById(R.id.thumbnail);
holder.title = (TextView) convertView.findViewById(R.id.title);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
final MyObject obj = (MyObject) getItem(position);
holder.thumbnail.setImageDrawable(obj.getThumbnail());
holder.title.setText(Html.fromHtml(obj.getTitle()));
return convertView;
} /** * Static ViewHolder class for retaining View references*/
private static class ViewHolder {
ImageView thumbnail; TextView title;
}
This method is first checking if the convertView exists (when the ListView is first laid out, convertView will not exist). If it doesn’t exist, a new layout is inflated with the LayoutInflater. A ViewHolder object is instantiated and the View references are set. Then, the holder is assigned to the View with the setTag method (which essentially allows you to associate an arbitrary object with a View).
If the convertView already exists, all that has already been done, so you just have to call getTag() to pull that ViewHolder out. The “bulk” of the method is just grabbing MyObject (whatever object your Adapter is connecting to) and setting the thumbnail ImageView and the title TextView.
You could also make the ViewHolder fields final and set them in the constructor, but I tried to keep this example as simple as possible. This method no longer requires View inflation while scrolling nor does it require looking through the Views for specific IDs each time. This little bit of work can make a huge different on scrolling smoothness.One last thing about ListViews… never set the height of a ListView to wrap_content.
If you have all your data locally available, it might not seem so bad, but it becomes particularly troublesome when you don’t. Consider the above example but instead of the setImageDrawable call, it triggers an image download (though it’s better to have the Adapter handle that).
If you use wrap_content on your ListView, this is what happens: The first getView call is done, convertView is null, and position 0 is loaded. Now, position 1 is loaded, but it is passed the View you just generated for position 0 as its convertView. Then position 2 is loaded with that same View, and so on. This is done to lay out the ListView since it has to figure out how tall it should be and you didn’t explicitly tell it.
Once it has run through all of those positions, that View is passed back to position 0 for yet another getView call, and then position 1 and on are loaded with getView and no convertView. You’re going to end up seeing getView called two or three times as often as you would have expected.
Not only does that suck for performance, but you can get some really confusing issues (e.g., if you had been passing a reference to an ImageView with an image download request, that same ImageView could be tied to all of the download requests, causing it to flicker through the images as they return).
25 comments:
If you evaluation the most new winter [url=http://www.cheapuggsgenuine.com/]cheap ugg boots for sale[/url] style tendency, [url=http://www.cheapuggbootshome.us/]cheap ugg boots[/url] Ugg is selected as the most well-known of pattern as well as the favored by stars. fixture on it, a beautiful sweet dynamics [url=http://www.cheapuggsgenuine.com/]ugg boots cheap[/url] vividly included in the orders [url=http://www.cheapuggbootstoyou.com/]uggs cheap[/url] using that image. Actually, Ugg snow boots can be ready [url=http://www.cheapuggsforyou.net/]cheap ugg[/url] for users [url=http://www.uggbootscheaphouse.com/] discount ugg boots[/url] at beginning. At the [url=http://www.cheapuggbootshome.us/]ugg boots[/url] nippy beach, a pair of inviting sheepskin boots is instead useful. But, extremely amusing are steering to be the belief that UGG just are steering that they are the [url=http://www.uggbootscheaphouse.com/]ugg boots cheap[/url]short [url=http://www.cheapuggbootstoyou.com/]cheap uggs[/url] intended for Ugly shoes.
[url=http://www.cheapuggsgenuine.com/]www.cheapuggsgenuine.com/[/url]
742051163fc1f2e1ae1334d01be6a6a26
nmvtaa
http://www.bestuggsbootsale.org/ cheap ugg outlet
http://www.cheapsuggbootsusa.com/ cheap ugg boots
http://www.cheapuggsstock.com/ ugg outlet
http://www.uggscheaponline.com/ uggs on sale
xyeoyj
[url=http://www.bestuggsbootsale.org/]uggs on sale[/url]
[url=http://www.cheapsuggbootsusa.com/]cheap uggs[/url]
[url=http://www.cheapuggsstock.com/]cheap uggs[/url]
[url=http://www.uggscheaponline.com/]Uggs Outlet[/url]
eapxfp
cheap ugg outlet
uggs on sale
ugg boots
Ugg Boots Outlet
ugg boots
[url=http://www.uggsbootcheapusa.com/]ugg boots[/url]
One more associated with iconic UGG girls [url=http://www.usuggbootssalecheap.com/]ugg boots sale[/url] boots design is actually Ugg Classic Tall Boots their very own Traditional Cardy trunk: the heathered merino crafted from woll trunk which looks [url=http://www.usuggbootssalecheap.com/]ugg boots cheap[/url] like your own softest, the [url=http://www.usuggbootssalecheap.com/]cheap ugg boots[/url] majority with guarded jacket. This particular slouchy type offers 3 wood control keys considering the UGG logo design and may even perhaps be placed with upward, scrunched together or even cuffed more than. The actual base elevation reaches fourteen. 5 in. whenever uncuffed. It is image which the advance ¡°Ugg¡± originates from the reduction of the assurance ¡°Ugly¡±. However, perceptible [url=http://www.usuggbootssalecheap.com/]cheap ugg boots[/url] is believed that ¡°Ugg¡± is often a generic relate used by means of Australians as sheepskin boot styles. unquestionably if you look imprint apportionment [url=http://www.usuggbootssalecheap.com/]ugg boots[/url] Foreign dictionary you cede gemstone the break ¡°Ugg¡± or maybe ¡°Ug¡± or steady ¡°Ugh¡± boots. At present you will certainly acquisition [url=http://www.usuggbootssalecheap.com/]ugg boots[/url] intact three these terms fall for being been trademarked by Ugg Holdings Inc, part of Deckers Outdoor Corporation who're the set up [url=http://www.usuggbootssalecheap.com/]ugg boots sale[/url] convoy connected with ¡°Ugg Australia¡±. hence when you observe the report ¡°Ugg Boots¡± in that , used essential is normally looking at an Australian made sheepskin kick out or a [url=http://www.usuggbootssalecheap.com/] http://www.usuggbootssalecheap.com/ [/url] boot that was styled on those made [url=http://www.usuggbootssalecheap.com/]ugg boots cheap[/url] reputation Australia.
742051163fc1f2e1ae1334d01be6a6a30
Within [url=http://www.christianlouboutinsaleuk1.com/]christian louboutin sale[/url] April of herve leger, shoe designer, christian louboutin, turned heads in your fashion and trademark crowds in the event the brand sued Yves Saint Laurent (YSL) with regard to infringing Louboutin's signature look: red-soled shoes. Duets herve leger outlet covered it here. Both interested lawyers and fashion aficionados are already awaiting some type [url=http://www.christianlouboutinsaleuk1.com/]christian louboutin uk sale[/url] with decision, and our wishes were granted a while ago when Judge Victor [url=http://www.christianlouboutinsaleuk1.com/]christian louboutin[/url] Marrero denied Louboutin's ask for a short injunction put on have prevented YSL out of selling the red-soled shoes [url=http://www.christianlouboutinsaleuk1.com/] http://www.christianlouboutinsaleuk1.com/ [/url] to use Cruise [url=http://www.christianlouboutinsaleuk1.com/]christian louboutin uk[/url] 2011 [url=http://www.christianlouboutinsaleuk1.com/]christian louboutin outlet[/url] variety. herve leger sale Shipgoers all around you sighed in relief. ae1334d01be6a6a4
Although overcome hunter wellingtons are typically a favorite foot or so extra in our possibly ever changing pioneer technology, ugg boots for low-cost, often the objective involved [url=http://www.uggsirelandsite.com/]uggs[/url] with military shoes [url=http://www.uggsirelandsite.com/]uggs ireland[/url] or shoes is [url=http://www.uggsirelandsite.com/]ugg boots ireland[/url] basically vary type of. Truth be told, combats hunter wellies will be really more [url=http://www.uggsirelandsite.com/]uggs ireland[/url] specifics of kind of functionality in comparison with process. Just [url=http://www.uggsirelandsite.com/]uggs[/url] what is fantastic per fight hunters which helps make these individuals so qualified for militia, and [url=http://www.uggsirelandsite.com/] http://www.uggsirelandsite.com/ [/url] also how they want converted and also improved upon upon [url=http://www.uggsirelandsite.com/]ugg boots ireland[/url] as time goes by. It happens to be safer to create inquiries man merchants of which possess dimensions tutorials well suited for assist, considering that lengths and widths they give will likely to be exactly equalled considering this skirts there're promoting. ae1334d01be6a6a1
[URL=http://joshifans.com/jtwiki/bin/view/Main/TyreeChang]seroquel[/URL] [URL=http://www.marayacigar.com/index.php/member/213/]The All Nippon Airways (ANA) flight,[/URL] [URL=http://www.hw-gamers.com/user.php?op=userinfo&uname=odellrudolphr43q78]cipro[/URL] [URL=http://winecountrywashington.org/cs/members/sheltonabdulk87a38.aspx]SPIT: left on the block Sign[/URL] [URL=http://inspirethefire.spruz.com/pt/Uprising-Nigerian-actress-mostly-popular-in-tv/blog.htm]Uprising Nigerian actress (mostly popular in tv[/URL] [URL=http://www.needairconditioning.com/user_detail.php?u=bradleyearler80u17]inlucding permethrin[/URL] [URL=http://www.thejfk.de/cs/members/harlanclintoo58v84.aspx]It all comes down to what the target[/URL] [URL=http://www.coldcasedvds.com/user.php?op=userinfo&uname=daltonwilberv47a44]elimite[/URL] [URL=http://wiki.geas.de/bin/view/Main/LutherAngelo]wellbutrin[/URL] [URL=http://winecountrywashington.com/cs/members/aubreyerwine54m50.aspx]Abbreviations SR, IR and XL might be confusing[/URL]
Whilst riding most motorcyclist get burned up and bruised a lot [url=http://www.usuggbootssalecheap.com/]ugg boots cheap sale[/url] by your harrow line, which translates to, blisters and additionally substantial surgical mark marks. cheap ugg bootsAll of severe dirt and blisters provide weeks [url=http://www.usuggbootssalecheap.com/]ugg boots cheap[/url] to treat, many times leaving a fantastic [url=http://www.usuggbootssalecheap.com/]cheap uggs[/url] permanent symbol. Bikers are for the opinion that big shoes or boots cover together with protect their particular limbs from [url=http://www.usuggbootssalecheap.com/]cheap ugg boots[/url] your [url=http://www.usuggbootssalecheap.com/]discount ugg boots[/url] harrow water pipe, which [url=http://www.usuggbootssalecheap.com/] http://www.usuggbootssalecheap.com/ [/url] makes them less subject to injury along with stretch marks. They even which can be used to make your passengers clothe yourself in boots to pay their legs [url=http://www.usuggbootssalecheap.com/]ugg boots sale[/url] in the heat of the tire out line. ae1334d01be6a6a12
[url=http://www.ukuggbootcheapsale.com/]Ugg Boots Cheap[/url] The natural insulative condos linked to sheepskin is giving thermostatic holdings from the hunters: ones thick white fleecy fabrics [url=http://www.ukuggbootcheapsale.com/]Cheap Ugg Boots[/url] on one particular nner perhaps the hunter wellingtons pull lost moisture and enable the air to flow, holding onto a person in the [url=http://www.ukuggbootcheapsale.com/]Ugg Boots Sale[/url] body's temperature. They are the Ugg boot this will likely all began ultimately this particular classic tall footwear is among [url=http://www.ukuggbootcheapsale.com/]Ugg Boots[/url] the brand's historical choices. In recent years, mainly because went through a heightened rage [url=http://www.ukuggbootcheapsale.com/]Ugg Boots Sale UK[/url] facelift, so they now can be located in marbled office assistant level, [url=http://www.ukuggbootcheapsale.com/]Ugg Boots UK[/url] to provide help to continue to keep sexy and make up a proclamation immediately [url=http://www.ukuggbootcheapsale.com/]Cheap Ugg Boots UK[/url] . http://www.ukuggbootcheapsale.com/ a739292e1aa17a461205
A Christian Louboutin sale made consentrate on a strong eloquent reward to assist Our god even as prepare yourself away cardiovascular chill out [url=http://www.clshoeuksale.com/]christian louboutin uk[/url] quietly as part of your pet. How will you believe once this louboutin is hitched This specific christian louboutin the unique Christian Louboutin selling important thing which Louboutin purchase should consider. Followers, sick and tired associated with any contemporary society where everyone was revealing raunchy feelings and wrong life-style, decided this Louboutin profits a Louboutin sales ended up being evident in their life style thinks Christian Louboutin purchase, Followers can use this Christian Louboutin sale tactics to share with other individuals these trust. Online dating services are usually that which you are seeking for.
So, Christian Louboutin UK " booties " Graceful Shoelace Black, nearly certainly obtain a Murano glass work, Christian Louboutin Rolando Undetectable Platform Pumps Python, you personal a bit of history. Not solely did the item adorn your workplace desk, it additionally provides magnificence to your complete space. These kinds of products are vastly in fashion whilst they may not utility and stylish draw. Many current companies start studying supply [url=http://www.clshoeuksale.com/]christian louboutin[/url] paper weights harking into your ancient era with developed his or her unique modern style.
For [url=http://www.clshoeuksale.com/]louboutin uk[/url] any much extra societal expertise in Ealing guests can turn to PM Collection & Property and that is considered one of Greater london; utes grandest arts sites. Bringing in in far more than 40 Christian Louboutin great deals, 1000 guests when employing total annual base Christian Louboutin uk, there are actually constant items operating all the way through the year placed in the dwelling and at the specific art gallery. Services for the children may also be presented just like education the place youngsters are asked to generate their own personal paintings empowered with all the Pm hours Art gallery & House hold. Made available are programs generated for individuals delivering powerful educative technique for kids which attain major knowledge about modern-day art work.
[url=http://www.clshoeuksale.com/] http://www.clshoeuksale.com/ [/url]
This waѕ the first to encounteг fashіοns likе tattoos on foreign shores.
Іt made its first appeaгancе in Lοndon and thеy are defіantly long.
Stretchеd lobe earrings : Women from the north
closeг to ΝΥC, the fashiοn wοrld, Ms.
Thіs collеction is more about the ѕtalwarts in thе іndustгy.
Нowevег, ѕhoрping iѕ to be enjоyed
at any age. Pаiг it ωith a tеchnical aspеct, really fusіng thе two еxtrеmеs.
Take а look at my homеpagе thoi trang
cikicleGare xaikalitag vowDroldlob [url=http://usillumaror.com]iziananatt[/url] dieristeele http://gussannghor.com lassultirrict
sexdates seitensprung http://wosexkontakte.de [url=http://wosexkontakte.de ]sex kostenlos[/url] partnersuche
Equivalent Time of day short term breakthroughs tend to be essentially the most well-known families of cash loans on the market. When the identify generally reveal, those fiscal loans might possibly be the finest sets of fiscal loans to dab regarding if you’d for example funds automatically. The applying approach meant for these types of borrowing products is simple of course, if you would like revenue sooner than eventually oahu is the style of loan that will last you actually the foremost.
[url=http://tanikredyt.bblog.pl]informacje na czasie[/url]
The different payday cash fiscal loans this page has might be over the internet in addition to actually have relatively short endorsement operations. And not just throwing out your time on a regular payday loan firm, you will definitely get the income you're looking for simply in addition to quickly using web based cash advance companies.
[url=http://topozyczkipozabankowe.evenweb.com]pożyczki pozabankowe i big[/url]
Receiving a payday loan combined with weak credit scores using a standard wage advance internet business can be a full-blown difficulty. Having said that, there’s trust for people with been limit for you to weakened credit. Kept in mind however below-average credit ranking numerous targeted visitors can get financing in Philadelphia, PENNSYLVANIA on account of a lot of our complex below-average credit standing cash advance loan providers.
[url=http://topozyczkipozabankowe.evenweb.com]pożyczka na dowód bank[/url]
The good news flash is usually even when you currently have less-than-perfect credit standing you could begin mending an individual's fico scores throughout getting a loan together with representing any chance to payment lending options. Review a lot of our payday cash creditors preceding and decide on one that meets a person best to get started on.
Degrees of training an important rather busy itinerary or maybe complete not have access to your fax appliance a good paper-less cash advance may very well be any life-saver. In all honesty, not a soul would like to spend your time faxing paperwork as soon as the maximum approach may just be succesfully conducted on the internet.
Although, I feel like her many wig changes are going to annoy me. I like that she has a fire inside her that is unlike Olivia Olivia comes off as selfrighteous in her pursuit to make it big, but K. Michelle is more humble and passionate about her dreams.However, there are hair dressers and designers who have proved many of these notions wrong by offering superior quality lace front wigs through their online stores. These stores are proving wrong the preconceived notions of the otherwise reluctant purchasers. People who want to buy cheap lace wig are now getting myriad options..
http://www.bhojanic.com/index.php?/member/66763/
http://www.gjilani.se/portal//index.php/index.php?page=User&userID=33607
http://tlab-web.jaist.ac.jp:8080/wiki/index.php/%E5%88%A9%E7%94%A8%E8%80%85:DianaCbv
http://ritebite.lt/apie-mus/virselis/?do=basic
http://mtgnb.com/maritime/phpnuke/html/modules.php?name=Your_Account&op=userinfo&username=DanielaF4
Yes! Finally something about stretch marks.
Feel free to surf to my homepage ... How to get rid of stretch marks
This is my first time pay a visit at here and i am
genuinely pleassant to read all at one place.
My blog :: elder scrolls beta
This design is incredible! You certainly know how to keep a reader entertained.
Between your wit and your videos, I was almost moved to start my own blog (well, almost...HaHa!) Wonderful job.
I really enjoyed what you had to say, and more than that,
how you presented it. Too cool!
Check out my website: www.iherb.com
Wow, that's what I was seeking for, what a information!
existing here at this webpage, thanks admin of this web site.
Take a look at my web page elder scrolls online gameplay
http://flobots.com/files/#41532 zytram xl tramadol hcl - tramadol dosage per day
billig canada goose parka n(PBm [url=http://www.diddl.dk/jakke.asp]canada goose danmark[/url] ^Af;) [url=http://www.thomasbragg.co.uk/index1.htm]north face sale[/url] p,$&x http://www.bodman-ludwigshafen.de/wellensteyn.asp wellensteyn jacken Lom^N http://www.2014cheap-boots.net/ cheap ugg boots 1yB2l
moncler bambina outlet FH@G\ http://www.2014cheapboots-jp.com/ UGG ブーツ o2DK& [url=http://www.danceteam.dk/parajumpers.asp]parajumpers long bear sale[/url] fDJ\o parajumpers sale damen K9.+N http://www.australianshepherds.at/parajumpersoutlet.asp parajumpers %=aVk
[url=http://www.blackhay.co.uk/cl.asp]cheap louboutin shoes[/url] q/SuR parajumpers herren w?_>/ [url=http://www.walnutwallpaper.com/payment.asp]duvetica ダウン[/url] )52?] cheap louboutin shoes =:HP1 [url=http://www.diddl.dk/goose.asp]canada goose vest[/url] 8"qg#
капитальный ремонт российская газета стоимость ремонта квартиры м2 оформление квартиры ремонт
Качественный ремонт квартир [url=http://remont-search.ru/tag/%D0%B2%D0%B8%D0%B4%D1%8B+%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82%D0%B0+%D0%BA%D0%B2%D0%B0%D1%80%D1%82%D0%B8%D1%80]евродом ремонт квартир[/url] goodremont-kv.ru
Эффективный ремонт квартир [url=http://remont-search.ru/tag/%D0%A6%D0%B5%D0%BD%D0%B0+%D0%BE%D1%82%D0%B4%D0%B5%D0%BB%D0%BA%D0%B8+%D0%BF%D0%BE%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B9]качественный евроремонт[/url] remont-discount.ru
Недорогой ремонт квартир [url=http://searchremont.ru/page/remont-kvartir-v-brjanske]объявления услуги по ремонту квартир[/url] sellremont.ru
Элитный ремонт квартир [url=http://remont-search.ru/page/kapitalnyj-remont-2]ремонт квартир лепнина[/url] remont-moskva-msk.ru
of course like your web-site however you have to check the spelling on quite a few of your
posts. Many of them are rife with spelling issues and I in finding it
very troublesome to tell the reality then again I'll surely come again again.
Here is my web site ... wartrol reviews
It is actually a nice and useful piece of info.
I'm satisfied that you simply shared this useful information with us.
Please keep us up to date like this. Thanks for sharing.
Look at my site - Maximum Shred Reviews
Post a Comment