• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 21:47
CET 02:47
KST 10:47
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy7ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book19Clem wins HomeStory Cup 289
Community News
Weekly Cups (March 16-22): herO doubles, Cure surprises3Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool48Weekly Cups (March 9-15): herO, Clem, ByuN win42026 KungFu Cup Announcement6BGE Stara Zagora 2026 cancelled12
StarCraft 2
General
Potential Updates Coming to the SC2 CN Server What mix of new & old maps do you want in the next ladder pool? (SC2) Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool Weekly Cups (March 16-22): herO doubles, Cure surprises Weekly Cups (August 25-31): Clem's Last Straw?
Tourneys
WardiTV Mondays Sparkling Tuna Cup - Weekly Open Tournament World University TeamLeague (500$+) | Signups Open RSL Season 4 announced for March-April WardiTV Team League Season 10
Strategy
Custom Maps
[M] (2) Frigid Storage Publishing has been re-enabled! [Feb 24th 2026]
External Content
The PondCast: SC2 News & Results Mutation # 518 Radiation Zone Mutation # 517 Distant Threat Mutation # 516 Specter of Death
Brood War
General
BGH Auto Balance -> http://bghmmr.eu/ Gypsy to Korea Soulkey's decision to leave C9 mca64Launcher - New Version with StarCraft: Remast How much money terran looses from gas steal?
Tourneys
[ASL21] Ro24 Group C Small VOD Thread 2.0 [Megathread] Daily Proleagues [ASL21] Ro24 Group B
Strategy
What's the deal with APM & what's its true value Fighting Spirit mining rates Simple Questions, Simple Answers Soma's 9 hatch build from ASL Game 2
Other Games
General Games
Darkest Dungeon Nintendo Switch Thread Stormgate/Frost Giant Megathread General RTS Discussion Thread Path of Exile
Dota 2
Official 'what is Dota anymore' discussion The Story of Wings Gaming
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Five o'clock TL Mafia Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia
Community
General
US Politics Mega-thread European Politico-economics QA Mega-thread Canadian Politics Mega-thread Russo-Ukrainian War Thread Things Aren’t Peaceful in Palestine
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Req][Books] Good Fantasy/SciFi books Movie Discussion! [Manga] One Piece
Sports
Cricket [SPORT] 2024 - 2026 Football Thread Formula 1 Discussion Tokyo Olympics 2021 Thread General nutrition recommendations
World Cup 2022
Tech Support
[G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Funny Nicknames
LUCKY_NOOB
Money Laundering In Video Ga…
TrAiDoS
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
Shocked by a laser…
Spydermine0240
Unintentional protectionism…
Uldridge
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 4319 users

The Big Programming Thread - Page 959

Forum Index > General Forum
Post a Reply
Prev 1 957 958 959 960 961 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 15 2018 04:16 GMT
#19161
I have a task in my Android app that needs to run asynchronously. It contributes to the UI and requires context(needs an object from the Application). Do I use an AsyncTask, Fragment, or something else?
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
berated-
Profile Blog Joined February 2007
United States1134 Posts
Last Edited: 2018-05-15 11:07:27
May 15 2018 11:06 GMT
#19162
On May 15 2018 13:16 WarSame wrote:
I have a task in my Android app that needs to run asynchronously. It contributes to the UI and requires context(needs an object from the Application). Do I use an AsyncTask, Fragment, or something else?


I personally always thought the fragment thing was a hack. We ultimately use loaders for this type of stuff, but async task can work. You just need to make sure that when the async task runs on the main thread that you realize the activity that started it could be destroyed.

Disclaimer most this information is from Android 2 years ago, don't know if they have new options but that looks like the same stuff.
Acrofales
Profile Joined August 2010
Spain18246 Posts
May 15 2018 11:15 GMT
#19163
On May 15 2018 20:06 berated- wrote:
Show nested quote +
On May 15 2018 13:16 WarSame wrote:
I have a task in my Android app that needs to run asynchronously. It contributes to the UI and requires context(needs an object from the Application). Do I use an AsyncTask, Fragment, or something else?


I personally always thought the fragment thing was a hack. We ultimately use loaders for this type of stuff, but async task can work. You just need to make sure that when the async task runs on the main thread that you realize the activity that started it could be destroyed.

Disclaimer most this information is from Android 2 years ago, don't know if they have new options but that looks like the same stuff.

Doing UI stuff from asynctasks is a bit finicky. You need to use a Handler, and ensure the UI element you want to manipulate still exists (and the activity that called it is still there). However, it is one of the better ways in Android for short little things. If what you want is something persistent, you should probably use an intentservice or a futuretask (interaction with the UI is similarly finicky or even more so).

Fragment has the advantage that it is a UI element, so changing the UI is easy. However, doing computation on the UI thread is a terrible idea, and if you want to run stuff asynchronously, Fragments are not the place for it: they will block the UI, and cause your app to stall/crash/get killed.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 15 2018 15:30 GMT
#19164
Yes, Fragment runs on the main thread. I tried it and couldn't handle the 1/2 second delay.

I tried it as an AsyncTask, too, and that seemed to work fine but I was wondering if there was a "better" Android way to do it.

From what I've read and experienced it seems hard to pass data back from an IntentService to a particular Activity. I've mostly been sending information to the user from them in Notifications.

I'll look into FutureTask.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Hanh
Profile Joined June 2016
146 Posts
May 15 2018 23:44 GMT
#19165
Changes to your model data shouldn't be coupled with UI anyway. If you have a long running task, use an async workflow and have it update your model. Keep your model in normal form but set up observers/computed properties in model views. Finally bind views to your model views.
Then your flow is:
- user performs a UI action like clicking on a button,
- button is bound to a field in the model view, which gets a onClick callback
- onClick dispatches the async workflow
- UI thread continues so the user can do other stuff if needed
- async workflow dispatcher picks up the task and starts executing it
- as it progresses, the w/f may update the model or it could update the model only at the end
- when the model updates, observers are notified and recompute their output
- view model updates the view properties that changed
- view refreshes

Consider your modern car, when you press on the gas pedal (UI) you send a signal (dispatch) to the on board computer (model). The later decides how much gas it should send to the engine (model logic). A bunch of sensors read your speed, rpm, etc. (view model) and they turn these values into something that the dashboard displays (view)

Old cars would directly couple the gas pedal with the carburetor and the dashboard have gauges directly hooked to the wheels and engine. It is a far simpler design but it doesn't allow for much 'smartness'.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 16 2018 01:05 GMT
#19166
Ah, right. I can't implement the Observer pattern for my DB because I'm using GreenDAO which doesn't support it. Your idea sounds great, though.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2018-05-16 07:35:34
May 16 2018 07:18 GMT
#19167
Of course you can implement the Observer pattern, just write a class that gates access to the ORM.


Use one Activity. Up to you about whether you want lots of Fragments or not. Don't use AsyncTask or Loaders or Handlers. Use LiveData which is part of the new Architecture Components.

Here's a bunch of modern samples.

https://github.com/googlesamples/android-architecture-components
https://developer.android.com/topic/libraries/architecture/



For fun watch about more modern Android development:

There is no one like you in the universe.
berated-
Profile Blog Joined February 2007
United States1134 Posts
May 16 2018 10:41 GMT
#19168
On May 16 2018 16:18 Blisse wrote:
Of course you can implement the Observer pattern, just write a class that gates access to the ORM.


Use one Activity. Up to you about whether you want lots of Fragments or not. Don't use AsyncTask or Loaders or Handlers. Use LiveData which is part of the new Architecture Components.

Here's a bunch of modern samples.

https://github.com/googlesamples/android-architecture-components
https://developer.android.com/topic/libraries/architecture/



For fun watch about more modern Android development:

https://www.youtube.com/watch?v=IrMw7MEgADk


When did all this stuff come out? I just skimmed it but it looks way nicer than the previous apis. We abandoned the Android part after about a year of iterating to loaders for everything if you don't want your app to a crash and just use a webview wrapper for everything. Does the new architecture help handle network failures more easily too?
Manit0u
Profile Blog Joined August 2004
Poland17706 Posts
May 17 2018 18:28 GMT
#19169
[image loading]
Time is precious. Waste it wisely.
Khalum
Profile Joined September 2010
Austria831 Posts
May 17 2018 19:57 GMT
#19170
On May 18 2018 03:28 Manit0u wrote:
[image loading]


Seems rhobust.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 17 2018 23:30 GMT
#19171
On May 16 2018 16:18 Blisse wrote:
Of course you can implement the Observer pattern, just write a class that gates access to the ORM.


Use one Activity. Up to you about whether you want lots of Fragments or not. Don't use AsyncTask or Loaders or Handlers. Use LiveData which is part of the new Architecture Components.

Here's a bunch of modern samples.

https://github.com/googlesamples/android-architecture-components
https://developer.android.com/topic/libraries/architecture/



For fun watch about more modern Android development:

https://www.youtube.com/watch?v=IrMw7MEgADk

Well, also because I don't think it applies to part of my use case. Generating a wallet file takes ~5s, which may be too long for a user to wait on an activity to get the updated data. However, I will do it because it seems better.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Hanh
Profile Joined June 2016
146 Posts
May 18 2018 00:07 GMT
#19172
On May 18 2018 08:30 WarSame wrote:
Show nested quote +
On May 16 2018 16:18 Blisse wrote:
Of course you can implement the Observer pattern, just write a class that gates access to the ORM.


Use one Activity. Up to you about whether you want lots of Fragments or not. Don't use AsyncTask or Loaders or Handlers. Use LiveData which is part of the new Architecture Components.

Here's a bunch of modern samples.

https://github.com/googlesamples/android-architecture-components
https://developer.android.com/topic/libraries/architecture/



For fun watch about more modern Android development:

https://www.youtube.com/watch?v=IrMw7MEgADk

Well, also because I don't think it applies to part of my use case. Generating a wallet file takes ~5s, which may be too long for a user to wait on an activity to get the updated data. However, I will do it because it seems better.


The user doesn't wait for anything. As I said, the workflow is async and the user interface is not blocked. If your app supports multiple wallets, he could even create more than one and still not block.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 18 2018 03:57 GMT
#19173
I get that it doesn't block the main thread, I was just thinking that since I have to work with wallets and Ethereum my wait time for certain actions can be ~40s where a notification may serve the purpose better than waiting for the UI. But I'll put both in.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
enigmaticcam
Profile Blog Joined October 2010
United States280 Posts
Last Edited: 2018-05-18 17:44:04
May 18 2018 17:43 GMT
#19174
Question on entity framework in C#.Net. I know EF supports transactions. But I want my SaveChanges to be dependent on a database check and I'm not sure how to do that.

I have an entity and any user can potentially create a new row in that table. This table has an IsComplete field. I only want to allow creating new rows if all rows in the table are marked true for IsComplete. The default value when creating a new row is false for IsComplete. So obviously there's potential risk if two different people create a new row at the same time. In that scenario, I would only want one to be successful, and the other should fail because the first one is not complete.

Typically I would just wrap the check and the save in a sql transaction script, but I'm not sure how to do that using EF. Any help? I tried googling, but I keep getting more broad information on just transactions or rolling back SaveChanges.
Manit0u
Profile Blog Joined August 2004
Poland17706 Posts
May 18 2018 20:03 GMT
#19175
You could either try locking the database (SELECT FOR UPDATE), a transaction that checks the count at the beginning and end and rolls back if it's not right, or using distributed locking with something like Redis Mutex.
Time is precious. Waste it wisely.
supereddie
Profile Joined March 2011
Netherlands151 Posts
May 19 2018 09:17 GMT
#19176
On May 19 2018 02:43 enigmaticcam wrote:
Question on entity framework in C#.Net. I know EF supports transactions. But I want my SaveChanges to be dependent on a database check and I'm not sure how to do that.

I have an entity and any user can potentially create a new row in that table. This table has an IsComplete field. I only want to allow creating new rows if all rows in the table are marked true for IsComplete. The default value when creating a new row is false for IsComplete. So obviously there's potential risk if two different people create a new row at the same time. In that scenario, I would only want one to be successful, and the other should fail because the first one is not complete.

Typically I would just wrap the check and the save in a sql transaction script, but I'm not sure how to do that using EF. Any help? I tried googling, but I keep getting more broad information on just transactions or rolling back SaveChanges.

Just add a check constraint in the database. It will generate an exception and then you can rollback your transaction.
"Do not try to make difficult things possible, but make simple things simple." - David Platt on Software Design
sabas123
Profile Blog Joined December 2010
Netherlands3122 Posts
May 19 2018 15:43 GMT
#19177
Just got my necessary math certificate after first hearing I failed it. Now I can finally go on to a University and study actual computer science instead of some flaky applied version. I'M SO HAPPY!!!!
The harder it becomes, the more you should focus on the basics.
bo1b
Profile Blog Joined August 2012
Australia12814 Posts
Last Edited: 2018-05-20 02:15:36
May 20 2018 02:15 GMT
#19178
On May 20 2018 00:43 sabas123 wrote:
Just got my necessary math certificate after first hearing I failed it. Now I can finally go on to a University and study actual computer science instead of some flaky applied version. I'M SO HAPPY!!!!

Good shit man Depending on what you want to study in cs, selecting to do more mathematics rather then less can be a truly excellent idea.
ShoCkeyy
Profile Blog Joined July 2008
7815 Posts
May 20 2018 04:16 GMT
#19179
Congrats Sabas123, as bo1b said, going a more math route would be a smart idea. A lot of companies are looking for more stats engineers due to machine learning, and AI which are the two largest growing sectors for CS imo.
Life?
bo1b
Profile Blog Joined August 2012
Australia12814 Posts
May 20 2018 04:38 GMT
#19180
Most of the really specialised subsets of cs (I want to say all, but I could be wrong) have heavy groundings in various types of math.
Prev 1 957 958 959 960 961 1032 Next
Please log in or register to reply.
Live Events Refresh
Replay Cast
00:00
Korean StarCraft League #87
CranKy Ducklings153
LiquipediaDiscussion
OSC
18:00
OSC Elite Rising Star #18
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RuFF_SC2 174
Vindicta 35
StarCraft: Brood War
GuemChi 5705
NaDa 31
Rock 19
Dota 2
monkeys_forever516
League of Legends
Cuddl3bear17
Counter-Strike
fl0m722
taco 595
Super Smash Bros
hungrybox424
Other Games
summit1g9847
tarik_tv4432
JimRising 313
C9.Mang0291
ViBE99
minikerr8
Organizations
Other Games
BasetradeTV46
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 17 non-featured ]
StarCraft 2
• davetesta52
• EnkiAlexander 32
• RyuSc2 27
• CranKy Ducklings SOOP4
• LaughNgamezSOOP
• sooper7s
• Migwel
• IndyKCrew
• Kozan
• intothetv
• AfreecaTV YouTube
StarCraft: Brood War
• RayReign 44
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Doublelift3047
Other Games
• Scarra719
Upcoming Events
WardiTV Team League
10h 13m
Big Brain Bouts
15h 13m
Fjant vs SortOf
YoungYakov vs Krystianer
Reynor vs HeRoMaRinE
RSL Revival
1d 8h
Cure vs Zoun
herO vs Rogue
WardiTV Team League
1d 10h
Platinum Heroes Events
1d 13h
BSL
1d 18h
RSL Revival
2 days
ByuN vs Maru
MaxPax vs TriGGeR
WardiTV Team League
2 days
BSL
2 days
Replay Cast
2 days
[ Show More ]
Replay Cast
3 days
Afreeca Starleague
3 days
Light vs Calm
Royal vs Mind
Wardi Open
3 days
Monday Night Weeklies
3 days
OSC
3 days
Sparkling Tuna Cup
4 days
Afreeca Starleague
4 days
Rush vs PianO
Flash vs Speed
Replay Cast
5 days
Afreeca Starleague
5 days
BeSt vs Leta
Queen vs Jaedong
Replay Cast
5 days
The PondCast
6 days
Replay Cast
6 days
Liquipedia Results

Completed

KCM Race Survival 2026 Season 1
WardiTV Winter 2026
Underdog Cup #3

Ongoing

BSL Season 22
CSL Elite League 2026
CSL Season 20: Qualifier 1
ASL Season 21
Acropolis #4 - TS6
RSL Revival: Season 4
Nations Cup 2026
NationLESS Cup
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual

Upcoming

2026 Changsha Offline CUP
CSL Season 20: Qualifier 2
CSL 2026 SPRING (S20)
Acropolis #4
IPSL Spring 2026
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
IEM Atlanta 2026
Asian Champions League 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.