Я вижу одну ситуацию, когда вы не сможете использовать стандартный метод передачи параметров через Intent
: при создании действия, которое будет запущено другим приложением (скажем, редактирование действия плагин Tasker ) и, следовательно, не имеет контроля над Intent
, который запустит вашу деятельность.
Можно создать Activity
, который принимает параметры в своем конструкторе. Однако хитрость в его использовании заключается не в том, чтобы использовать его напрямую, а в том, чтобы использовать производный класс с конструктором по умолчанию, который вызывает super()
с соответствующими аргументами, например:
class BaseActivity extends Activity
{
public BaseActivity(String param1, int param2)
{
// Do something with param1 and param2.
}
// Many more lines of awesomeness.
}
class DerivedActivity extends BaseActivity
{
public DerivedActivity()
{
super("param1", 42);
}
}
Естественно, если вам нужно сгенерировать параметры для передачи в BaseActivity()
, вы можете просто заменить жестко запрограммированные значения вызовами функций.