2013-02-13 2 views
4

Какова цель использования намерения с сообщением, а не просто объявление статической переменной в java и вызов ее из нового действия? Мне кажется, что это проще, потому что у вас может быть статическая переменная, которую вы хотите (то есть ArrayList, Object и т. Д.).Дополнительное сообщение о намерениях Android против статической переменной

public class FirstActivity extends Activity { 
    public static String name; 
... 
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
    name = "Robert"; 
    startActivity(intent); 
} 

public class SecondActivity extends Activity { 
... 
    textView.setText(FirstActivity.name); 
} 
+0

Проще! = Правильный – Simon

ответ

4

Если вы только когда-либо хотите начать SecondActivity от FirstActivity, а не от какой-либо другой деятельности, когда-либо, то ваше решение может быть достаточно хорошим.

С помощью дополнительных функций для начала SecondActivity вы делаете его более многоразовым. Многие из акций акции работают таким образом, поэтому вы можете повторно использовать, например, активность камеры, чтобы снимать и сохранять фотографии, потому что она не делает предположений о том, кто ее вызывает.

В вашем случае, если SecondActivity запущен без FirstActivity, который был загружен в JVM, вы можете получить неожиданное поведение или исключения из нулевого указателя. Это не может быть риском в вашем случае использования, так что это зависит от вас.

0

Чтобы уточнить, стратегия OP не будет работать, если другое приложение, находящееся за пределами его/ее, хочет обрабатывать намерение. Из-за этого это не «лучшая практика».

Существует приблизительно 30 различных вариантов putExtra для Intent, каждый из которых представляет собой другой тип данных, который вы можете добавить. Они включают общие типы данных данных, такие как Bundle, Parcelable, Serializable и т. Д. Я не могу думать о чем-либо, что они не покрывают.

Я не использую статики или переменные, определяемые переопределением Приложения или другие подобные способы предполагать, что некоторые данные плавают в хранилище. Гораздо более надежно полагать, что моя активность или фрагмент полностью независимы.

Смежные вопросы