С более новой версией Android> = API 16 использовать finishAffinity ()
finishAffinity (); сделал свое дело.
Поскольку я читаю везде, предлагается использовать just finish (); Для более нового API (я использую> = 17) пришлось использовать finishAffinity ();
Классический пример того, почему использование помех как globals (функции в этом случае) является плохой идеей, неважно, язык.
самый устойчивый метод должен создать несколько реализация sub классы абстрактного класса "Действия".
Затем, чтобы попытаться удалить часть раздражения из-за инстанцирования экземпляра класса только для вызова это - методы, можно перенести его в какую-то фабрику.
, Например:
abstract class AbstractAction {
public abstract function do();
}
class FooAction extends AbstractAction {
public function do() {
echo "Do Foo Action";
}
}
class BarAction extends AbstractAction {
public function do() {
echo "Do Bar Action";
}
}
Затем создают фабрику для "помогания" в инстанцировании функции
class ActionFactory {
public static function get($action_name) {
//... return AbstractAction instance here
}
}
Затем использование это как:
ActionFactory::get('foo')->do();
Предстоящий PHP, который 5.3.0 выпуска включают последнее статическое связывание , который мог бы помочь. При использовании этой функции Вы могли использовать статическую переменную в статическом методе и позволить последнему статическому связыванию заботиться о нахождении "правильного" метода.
class Foo {
public static function getDefault() {
static $default = 'DEFAULT';
return $default;
}
public static function doSomething ($param) {
$default=static::getDefault(); // here is the late static binding
$param = ($param === FALSE) ? $default : $param;
return $param;
}
}
class Bar extends Foo {
public static function getDefault() {
static $default = 'NEW DEFAULT FOR CHILD CLASS';
return $default;
}
}