Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
ohgodwhat
Aug 6, 2005

TheresaJayne posted:

Computing is All of that so you should be as happy wiring networks as coding the next uber game.

Why would I be happy wiring networks?

Adbot
ADBOT LOVES YOU

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

Suspicious Dish posted:

I can tell you exactly when I added it, and what version it started to work in.

Are you saying that these were different versions? :v:

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
:)

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
Monitor config does sound like the sort of thing that would require an absurdly good test lab to get fully working without a version or two of people reporting issues with their bespoke hand-crafted projector that blatantly lies about every little detail when reporting its capabilities.

Dessert Rose
May 17, 2004

awoken in control of a lucid deep dream...
Yeah I think "happy" is the wrong word there. I could do it, but it not going to be happy about it.

substitute
Aug 30, 2003

you for my mum
And here we have a simple index/landing page:

php:
<?
$pagetitle='Derp!!';
$meta_keywords = '';
$meta_desc = 'Website description blah blah derp!';
$css_stage = 'homepage';

require($_SERVER['INCLUDES_LOCAL'].'/header.php');

$pfx_slider=RASTER_PREFIX_SLIDER."/homepage";
?>

<?

//===========================================================
//-- BEGIN: Class: SliderData  ------------------------------
//===========================================================
class SliderData{
    
    // BEGIN: Data Memembers
    public $id;
    public $css;
    public $img;
    public $headline;
    public $content;
    public $cta;
    // END: Data Memembers
    
    /*-------------------------------------------------------
        BEGIN: CONSTRUCTOR
    -------------------------------------------------------*/
    // SliderData:
    // Constructor
    function __construct(){
        //trace("SliderData: CONSTR");
        // Page Content
        $this->cta=new CTAButtonData();
    }
    /*-------------------------------------------------------
        END: CONSTRUCTOR
    -------------------------------------------------------*/
    
    /*-------------------------------------------------------
        BEGIN: DECONSTRUCTOR
    -------------------------------------------------------*/
    // __destructor:
    // Deconstructs object.
    public function __destructor(){
        //trace("SliderData: DECONSTRUCTOR");
        $this->id=NULL;
        $this->css=NULL;
        $this->img=NULL;
        $this->headline=NULL;
        $this->content=NULL;
        $this->cta=NULL;
        //parent::__destructor();
    }
    /*-------------------------------------------------------
        END: DECONSTRUCTOR
    -------------------------------------------------------*/
}
//===========================================================
//-- END: Class: SliderData  --------------------------------
//===========================================================

//===========================================================
//-- BEGIN: Class: IMGData  ---------------------------------
//===========================================================
class IMGData{
    
    // BEGIN: Data Memembers
    public $id='';
    public $css='';
    public $src;
    public $alt;
    public $title;
    // END: Data Memembers
    
    /*-------------------------------------------------------
        BEGIN: CONSTRUCTOR
    -------------------------------------------------------*/
    // IMGData:
    // Constructor
    function __construct($src='img.jpg', $alt='', $title=''){
        //trace("IMGData: CONSTR");
        $this->src=$src;
        $this->alt=$alt;
        $this->title=$title;
    }
    /*-------------------------------------------------------
        END: CONSTRUCTOR
    -------------------------------------------------------*/
    
    /*-------------------------------------------------------
        BEGIN: DECONSTRUCTOR
    -------------------------------------------------------*/
    // __destructor:
    // Deconstructs object.
    public function __destructor(){
        //trace("IMGData: DECONSTRUCTOR");
        $this->src=NULL;
        $this->alt=NULL;
        $this->title=NULL;
        
        $this->id=NULL;
        $this->css=NULL;
        //parent::__destructor();
    }
    /*-------------------------------------------------------
        END: DECONSTRUCTOR
    -------------------------------------------------------*/
}
//===========================================================
//-- END: Class: IMGData  -----------------------------------
//===========================================================

//===========================================================
//-- BEGIN: Class: CTAButtonData  ---------------------------
//===========================================================
class CTAButtonData{
    
    // BEGIN: Data Memembers
    public $id='';
    public $css='';
    public $label;
    public $href;
    public $target;
    public $title='';
    // END: Data Memembers
    
    /*-------------------------------------------------------
        BEGIN: CONSTRUCTOR
    -------------------------------------------------------*/
    // CTAButtonData:
    // Constructor
    function __construct($label='CTA BUTTON', $href='#', $target='_self'){
        //trace("CTAButtonData: CONSTR");
        $this->label=$label;
        $this->href=$href;
        $this->target=$target;
    }
    /*-------------------------------------------------------
        END: CONSTRUCTOR
    -------------------------------------------------------*/
    
    /*-------------------------------------------------------
        BEGIN: DECONSTRUCTOR
    -------------------------------------------------------*/
    // __destructor:
    // Deconstructs object.
    public function __destructor(){
        //trace("CTAButtonData: DECONSTRUCTOR");
        $this->label=NULL;
        $this->url=NULL;
        $this->target=NULL;
        $this->title=NULL;
        
        $this->id=NULL;
        $this->css=NULL;
        //parent::__destructor();
    }
    /*-------------------------------------------------------
        END: DECONSTRUCTOR
    -------------------------------------------------------*/
}
//===========================================================
//-- END: Class: CTAButtonData  -----------------------------
//===========================================================


$data_slider=array();

//// item: inspire
$data_slider[]=$ds=new SliderData();
$ds->id='derp1';
$ds->css='';
$ds->headline='Derp Headline';
$ds->content=<<<EOT
<p>It&rsquo;s what goes into the making of 
derp derp DERP DERPS</p>
EOT;
// img
$ds->img=$img=new IMGData();
$img->src=$pfx_slider.'/'.$ds->id.'.jpg'.RASTER_DATA_FULLWIDTH;
$img->alt='Derp Headline';
// cta button
$ds->cta=$cta=new CTAButtonData();
$cta->label='View Movie';
$cta->href=URL_EXPERIENCE.'derp1/';

//// item: longhouse
$data_slider[]=$ds=new SliderData();
$ds->id='derp2';
$ds->css='';
$ds->headline='The DerpDerp Derp';
$ds->content=<<<EOT
<p><strong>Derps</strong> the derp of derps</p>
EOT;
// img
$ds->img=$img=new IMGData();
$img->src=$pfx_slider.'/'.$ds->id.'.jpg'.RASTER_DATA_FULLWIDTH;
$img->alt='DerpDerp';
// cta button
$ds->cta=$cta=new CTAButtonData();
$cta->label='Learn More';
$cta->href=URL_DERRRRPP.'derp2/';

//// item: perspective-ne
$data_slider[]=$ds=new SliderData();
$ds->id='derp-ne';
$ds->css='';
$ds->headline='A Derp Story';
$ds->content=<<<EOT
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium, repellendus, minus, dolorum, eos cumque beatae quo magni nam soluta natus eius dolore doloribus esse accusantium distinctio provident pariatur ipsam deleniti?</p>
EOT;
// img
$ds->img=$img=new IMGData();
$img->src=$pfx_slider.'/'.$ds->id.'.jpg'.RASTER_DATA_FULLWIDTH;
$img->alt='Derp: New England';
// cta button
$ds->cta=$cta=new CTAButtonData();
$cta->label='See Derp New England';
$cta->href=URL_DERP;
$cta->target='_blank';

//// item: perspective-atl
$data_slider[]=$ds=new SliderData();
$ds->id='derp-atl';
$ds->css='';
$ds->headline='A Derp Challenge';
$ds->content=<<<EOT
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, veniam, similique, aspernatur, repudiandae.</p>
EOT;
// img
$ds->img=$img=new IMGData();
$img->src=$pfx_slider.'/'.$ds->id.'.jpg'.RASTER_DATA_FULLWIDTH;
$img->alt='Derp: Atlanta';
// cta button
$ds->cta=$cta=new CTAButtonData();
$cta->label='See Derp Atlanta';
$cta->href=URL_DERP;
$cta->target='_blank';

?>

<!--// BEGIN: ui-slider //-->
<div id="homepage" class="slider" data-slider>
<!--// BEGIN: ui-slider-track //-->
<ul class='slider_track'>
<?
$length=sizeof($data_slider);
$html='';
for($i=0; $i<$length; $i++){
    $ds=$data_slider[$i];
    $img=$ds->img;
    $cta=$ds->cta;
    
    // BEGIN: Slide
    $html.='<li class="slide">';
    $html.='<li class="slide_liner">';
    $html.='<div class="slide_content_container"><section>';
    $html.='<a class="pg_anchor" id="'.$ds->id.'" name="'.$ds->id.'"></a>';
    
    // IMG
    $html.='<img id="'.$img->id.'" class="'.$img->css.'" src="'.$img->src.'" alt="'.$img->alt.'"  title="'.$img->title.'"/>';
    
    // Headeline & Content
    $html.='<div>';
    $html.='<h1>'.$ds->headline.'</h1>';
    $html.=$ds->content;
    $html.='</div>';
    
    // CTA
    $html.='<a id="'.$cta->id.'" class="'.$cta->css.'" href="'.$href->src.'" target="'.$href->target.'" title="'.$img->title.'">';
    $html.=$cta->label;
    $html.='</a>';
    
    $html.='</section></div>';
    $html.='</li>';
    // END: Slide
}
// Print out slides
echo $html;
?>
</ul>
<!--// END: ui-slider-track //-->
</div>
<!--// END: ui-slider //-->

<? //if(PLATFORM == PLATFORM_DESKTOP) include(INCLUDES_GLOBAL.'/narrativenav.php');  ?>

<? require(INCLUDES.'/footer.php'); ?>

Bobbin Threadbear
May 6, 2007

Maluco Marinero posted:

One of the best remote wireframing sessions a designer I work with had was when he set up a good webcam pointing at his desk and just ran a Skype session. Unfortunately there's just way too much friction to getting whatever the flavour of the month white boarding software set up with the client, when you can just point them at Skype which they usually already have, and just go lo fi from there.

I had similar issues with trying to demo a prototype or live design with a client. After sorting through all kinds of lovely software I started using join.me and it's been a breeze since.

VikingofRock
Aug 24, 2008




I know posting about code written by astrophysicists is like shooting fish in a barrel (this is coming from an astrophysicist), but I just ran into a tool written by NASA which prints all of its output to stderr, regardless of whether or not that output contains any actual errors. There's no legitimate reason for that, right?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

VikingofRock posted:

I know posting about code written by astrophysicists is like shooting fish in a barrel (this is coming from an astrophysicist), but I just ran into a tool written by NASA which prints all of its output to stderr, regardless of whether or not that output contains any actual errors. There's no legitimate reason for that, right?

By default stderr is unbuffered while stdout is buffered. Maybe someone didn't know how to turn off buffering?

Mennonites Revenge
Feb 13, 2012

Lack of electricity... is my destiny...
I've heard cases where stdout is used for data output (e.g., to redirect to a file) and stderr is used for all status information, maybe it's following that convention blindly?

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

pokeyman posted:

By default stderr is unbuffered while stdout is buffered. Maybe someone didn't know how to turn off buffering?

That was the case for some physicist code I worked with (under the oppressive weight of). Maybe it's a FORTRAN hangover?

Coffee Mugshot
Jun 26, 2010

by Lowtax
code:
params := func() interface{} {
	return []interface{}{
		booVcs.Repo.Vcs.RootPath(),
		booVcs.Repo.VcsLocal.Status,
	}
}

action := func(params interface{}) string {
	rootPath := params.([]interface{})[0].(string)
	vcsStatus := params.([]interface{})[1].(string)

	return rootPath + "\n" + vcsStatus
}
A []interface{} is way more intuitive than defining a meaningful type.

QuarkJets
Sep 8, 2008

Mennonites Revenge posted:

I've heard cases where stdout is used for data output (e.g., to redirect to a file) and stderr is used for all status information, maybe it's following that convention blindly?

Knowing astrophysicists, this piece of software was probably first written in the 70s and slowly modified over time, so you've probably got the right answer

Hiowf
Jun 28, 2013

We don't do .DOC in my cave.

eithedog posted:

I, on the other hand, felt uneasy using macs. "So, you don't close your applications? Like, at all?".

A few years ago, when Android was relatively new, not having a quit button in your application could lead to a constant stream of 1 star reviews. We eventually relented because it's a silly thing to make a principled stand on and lose users over.

We drove a car with an automatic transmission (in Europe), an automated start-stop, automated air conditioning and an automatic handbrake for the holidays.

My wife turned everything but the transmission off because she found it "confusing". I still don't understand her problem with the air conditioning or handbrake, but she wanted the start-stop off because she thought the airco would go off when it stops the car (it doesn't unless the temperature is really close already - the system is basically smart and handles all the corner cases).

Human-Machine interface design is very hard. Even if you get it right, you still have to deal with the users who learned it wrong already.

Hiowf
Jun 28, 2013

We don't do .DOC in my cave.

FoiledAgain posted:

To get back to coding horrors, how about some nested for-else loops in Python.

Aside from this probably being clearer when written in functional style, what do you find so offensive here? Python has no goto or labeled break (and will never have, see PEP 3136). The closest thing (not using functional style) would've been putting the dimension check into a function and using the return as goto.

The two else constructs are totally superfluous (though I think I can make an argument that the last one is at least as readable as directly returning), but it's still clear what the code does and its not hard to understand.

If you consider this worthy of calling a programming horror, you're inexperienced or you work in a very very awesome place.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Not a python expert, but I think that fragment of code should have been rewritten as
Python code:
for dimension in dimensions:
    for feature in dimension:
        if not feature.value > threshold:
            return 'failed'
return 'passed'

Hiowf
Jun 28, 2013

We don't do .DOC in my cave.
Sure, but is the original really that offensive? I can read it, understand what it does, and if needed, modify it and be sure it won't end up launching the nukes. It certainly wouldn't make me laugh or cry.

Zombywuf
Mar 29, 2008

Skuto posted:

Human-Machine interface design is very hard. Even if you get it right, you still have to deal with the users who learned it wrong already.

I usually find dealing with the users who learned it wrong the only hard bit. It's actually pretty easy to define a user interface if you stop to think for a moment and don't listen to the users, user's managers, your manager who's spoken to the user's manager and the sales team who think that piling more buttons to do the thing they just thought of on the screen* is a great idea.

Not that I'm saying it's easy to design the perfect UI, but it's pretty easy to not design terrible ones.


* listed in increasing order of terrible

seiken
Feb 7, 2005

hah ha ha

Skuto posted:

Sure, but is the original really that offensive? I can read it, understand what it does, and if needed, modify it and be sure it won't end up launching the nukes. It certainly wouldn't make me laugh or cry.

The original is really really horrible IMO, there's 3 or 4 completely redundant/pointlessly over-complicated things about it. It's not the end of the world but no way I'd let it through code review. InternetJanitor's rewrite takes less than half the time to understand what it does

Zombywuf
Mar 29, 2008

So I was reading UPNP specs, I don't know why.

quote:

Header fields

HOST
REQUIRED. Field value contains multicast address and port reserved for SSDP by Internet Assigned Numbers Authority (IANA). MUST be 239.255.255.250:1900. If the port number (“:1900”) is omitted, the receiver MUST assume the default SSDP port number of 1900.

SupSuper
Apr 8, 2009

At the Heart of the city is an Alien horror, so vile and so powerful that not even death can claim it.

Skuto posted:

A few years ago, when Android was relatively new, not having a quit button in your application could lead to a constant stream of 1 star reviews. We eventually relented because it's a silly thing to make a principled stand on and lose users over.
I still do. :mad: For heavy-duty apps like games or misbehaving apps, I'd rather quit them immediately than let them sit in the background hogging until the memory manager decides the time is right.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

SupSuper posted:

I still do. :mad: For heavy-duty apps like games or misbehaving apps, I'd rather quit them immediately than let them sit in the background hogging until the memory manager decides the time is right.

I've never owned an Android smartphone before. Is memory usage actually something you have to personally be concerned about? That's horrible.

necrotic
Aug 2, 2005
I owe my brother big time for this!

Ithaqua posted:

I've never owned an Android smartphone before. Is memory usage actually something you have to personally be concerned about? That's horrible.

No, unless you are possibly still running a really old version. I haven't had any issues with memory management in a long time.

Zombywuf
Mar 29, 2008

Ithaqua posted:

I've never owned an Android smartphone before. Is memory usage actually something you have to personally be concerned about? That's horrible.

Imagine thousands of Java programmers have access to your phone.

QuarkJets
Sep 8, 2008

necrotic posted:

No, unless you are possibly still running a really old version. I haven't had any issues with memory management in a long time.

It actually depends a lot more on what kind of apps you download than on what version of Android you use. Some apps are full of coding horrors and will sit there draining your battery doing useless poo poo while they're still open, so battery-conscious users like to close apps whenever they're done with them

Thermopyle
Jul 1, 2003

...the stupid are cocksure while the intelligent are full of doubt. —Bertrand Russell

Ithaqua posted:

I've never owned an Android smartphone before. Is memory usage actually something you have to personally be concerned about? That's horrible.

Not really.

If you're having some problem it's possible that there's a misbehaving app, but that's likely going to be from wakelocks, not CPU or memory usage. Even then most people aren't going to have any issue.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

SupSuper posted:

I still do. :mad: For heavy-duty apps like games or misbehaving apps, I'd rather quit them immediately than let them sit in the background hogging until the memory manager decides the time is right.

Swiping away the app in the recently used list kills the process if I recall. A quit button wasn't necessary in the first place (usually indicated poor programming), but now is straight up redundant.

kitten smoothie
Dec 29, 2001

There is zero reason in the year 2014 to care about quitting Android apps. A "quit button" under the hood is just going to call Activity.finish() which is really pretty much the same as what's going to happen if you hit the back button from an app and wind up on your home screen.

Scaevolus
Apr 16, 2007

Apps aren't killed immediately when you switch away from them or hit back.

Some terribly programmed games (Ridiculous Fish) will peg the CPU regardless of if they're in the foreground (or if the screen is even on).

ATM Machine
Aug 20, 2007

I paid $5 for this

QuarkJets posted:

It actually depends a lot more on what kind of apps you download than on what version of Android you use. Some apps are full of coding horrors and will sit there draining your battery doing useless poo poo while they're still open, so battery-conscious users like to close apps whenever they're done with them

My favorite is how apps can just universally have access to every permission, and the only way to stop this is to not install the app in the first place.

Unless this has recently changed I can still find apps that require access to my text messages that have nothing to do with them.

HFX
Nov 29, 2004

Scaevolus posted:

Apps aren't killed immediately when you switch away from them or hit back.



I would hope that the apps aren't. It really ruins he concept that android has multitasking. In fact, on tablets it would be especially annoying if my app had to restart every time I left it.

[quote="Scaevolus" post="431167776"]
Some terribly programmed games (Ridiculous Fish) will peg the CPU regardless of if they're in the foreground (or if the screen is even on).

Facebook can be bad about doing this (and burning bandwidth).



ATM Machine posted:

My favorite is how apps can just universally have access to every permission, and the only way to stop this is to not install the app in the first place.

Unless this has recently changed I can still find apps that require access to my text messages that have nothing to do with them.

Have fun and go nuts: http://www.androidpolice.com/2013/07/25/app-ops-android-4-3s-hidden-app-permission-manager-control-permissions-for-individual-apps/

To be fair, sometimes those permissions are legit but the permission is too coarse.

Jewel
May 2, 2009

I have a really old bad (but cheap!) Android (2.2) that gets as hot as the sun if I try to run any kind of game, like cut the rope (and angry birds is too "intensive" to even run, so). I have to constantly use a task killer app to kill every task that suddenly opens itself in order to maintain decent response speeds on even the music player. I check back on the task killer every ten minutes or so and suddenly Facebook Chat is open, along with Maps, Weather, Voice Search, App Store, Browser, etc; all while I've only been listening to music with the screen turned off AND no internet access. Android (at least, old android) just loves to open up poo poo at random and there's definitely noticeable speedup from force quitting some of it.

Hiowf
Jun 28, 2013

We don't do .DOC in my cave.

Scaevolus posted:

Apps aren't killed immediately when you switch away from them or hit back.

They're paused. If you start running low on memory, the apps get a notification to lower their memory usage. If still more memory is required, they're destroyed.

It's possible for coding horrors to keep using resources even when paused. The fix consists, unsurprisingly, *not* of adding a quit button to those apps.

quote:

Some terribly programmed games (Ridiculous Fish) will peg the CPU regardless of if they're in the foreground (or if the screen is even on).

Uninstall the broken app or keep using your 2010's phone like a 1990's PC. Your choice.

quote:

My favorite is how apps can just universally have access to every permission, and the only way to stop this is to not install the app in the first place.

That's (in many cases) not really the apps fault. Android permissions are thoroughly hosed. There are two problems:

a) Apps can't request permissions at point of use, only at install time. If some obscure feature of my app needs a permission, I have to request that permission for every single user. Because most apps accumulate features, they end up requesting permission for everything under the sun.

b) Sometimes permissions don't exactly map as you would expect to features, causing apps to have to request scary permissions for innocent features. This gets worse if the application supports old Android releases that had more limited APIs.

Even Google understands that the situation is hosed, but they're not fixing it in the way you'd hope for: as of a week ago, apps can now update themselves and add new permissions without having to ask you (subject to some limitations, but still).

That said, things like UAC and SELinux are good reminders that this is a Hard Problem To Get Right.

quote:

suddenly Facebook Chat is open, along with Maps, Weather, Voice Search, App Store, Browser...there's definitely noticeable speedup from force quitting some of it.

Those are services, so quitting them just means they'll relaunch automatically a bit later (using even more CPU in the process). No quit button is going to help you there, you're better turning off the background updates. (Though on Android 2.2 you might be SOL there in terms of fine-grained enough control)

Zombywuf
Mar 29, 2008

Worst thing on my phone was Google calendar sync eating all my monthly bandwidth in a few days.

ATM Machine
Aug 20, 2007

I paid $5 for this

Skuto posted:

That's (in many cases) not really the apps fault. Android permissions are thoroughly hosed.

I figured it was something like overlapping features requiring permissions, though sometimes its a bit of a stretch to believe an app needs SMS and call phone permissions when it has no relation to either at a design level. I'm not an android developer though, so I can only imagine what nightmares relate to the permission settings.

I noticed that part about apps being able to request new permissions. That just seems slightly concerning.

Bruegels Fuckbooks
Sep 14, 2004

Now, listen - I know the two of you are very different from each other in a lot of ways, but you have to understand that as far as Grandpa's concerned, you're both pieces of shit! Yeah. I can prove it mathematically.

kitten smoothie posted:

There is zero reason in the year 2014 to care about quitting Android apps. A "quit button" under the hood is just going to call Activity.finish() which is really pretty much the same as what's going to happen if you hit the back button from an app and wind up on your home screen.

Say I'm playing Pandora and I hit the back button to get to the home screen. The music keeps playing! I've seen android phones have like 50 or 60 background processes running just with all the crap people download.

A lot of app developers like to run background apps. Download enough stuff that does that, they all keep running, and it eats battery life and memory. Apple tried the other way with banning background apps and people didn't like that, so they eventually relented. I don't really have a solution but it's totally still a problem if you download a bunch of apps even in the year of our lord 2014.

Jewel
May 2, 2009

But apple fixed that (at least with the ipad) where you swipe down with four fingers to bring up the "Apps That Are Open" list, which you can toss them upwards to close them for good, or tap to swap to it.

IMO that's a much better solution because
  • You know what you have open
  • You can close any app without a task manager
  • You can easily swap between apps, ie a browser and a game

Beamed
Nov 26, 2010

Then you have a responsibility that no man has ever faced. You have your fear which could become reality, and you have Godzilla, which is reality.


Bruegels Fuckbooks posted:

Say I'm playing Pandora and I hit the back button to get to the home screen. The music keeps playing! I've seen android phones have like 50 or 60 background processes running just with all the crap people download.

A lot of app developers like to run background apps. Download enough stuff that does that, they all keep running, and it eats battery life and memory. Apple tried the other way with banning background apps and people didn't like that, so they eventually relented. I don't really have a solution but it's totally still a problem if you download a bunch of apps even in the year of our lord 2014.

Why would a music playing app like Pandora allow you to switch to the home screen and conduct other activities while it plays? This is inexplicable!

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

Beamed posted:

Why would a music playing app like Pandora allow you to switch to the home screen and conduct other activities while it plays? This is inexplicable!

As a user, my expected behavior here is that if I hit the home button the music keeps playing whereas if I hit the back button the music stops and the app ceases to get cpu time.

Adbot
ADBOT LOVES YOU

zergstain
Dec 15, 2005

Jewel posted:

But apple fixed that (at least with the ipad) where you swipe down with four fingers to bring up the "Apps That Are Open" list, which you can toss them upwards to close them for good, or tap to swap to it.

IMO that's a much better solution because
  • You know what you have open
  • You can close any app without a task manager
  • You can easily swap between apps, ie a browser and a game

On the iPhone, you just double click the home button. It works no matter what you're doing.

I don't have an iPad, but does that also work? I would assume the four finger swipe only works on the home screen.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply