Android New Intent запускает особый метод

Я хочу запустить один из моих существующих действий и заставить действие вызвать конкретный метод после его запуска.

Возможно ли это?

Можно ли определить метод, который должен быть вызван после создания активности внутри моего намерения?

Например, что-то вроде:

Intent intent = new Intent(this, com.app.max.Home.class.myMethod);

Ответ 1

Нет, я не думаю, что у вас может быть что-то вроде этого Intent intent = new Intent (это, com.app.max.Home.class.method);

но вы можете сделать это

Intent intent = new Intent(this, com.app.max.Home.class);
intent.putExtra("methodName","myMethod");
startActivity(intent);

а затем в вызываемой активности (где вам нужно запустить метод) может принять намерение и решить, какой метод вызывать

@Override
protected void onNewIntent(Intent intent) {
   super.onNewIntent(intent);
   if(intent.getStringExtra("methodName").equals("myMethod")){
      mymethod();
   }
}

Ответ 3

Я решаю эту проблему, используя onCreate вместо onNewIntent.

Действие A:

Intent intent = new Intent(this, com.app.max.Home.class);
intent.putExtra("methodName","myMethod");
startActivity(intent);

com.app.max.Home Деятельность:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home);

    if(savedInstanceState == null)
    {
        Bundle extras = getIntent().getExtras();
        if (extras == null)
        {
            //Extra bundle is null
        }else{
            String method = extras.getString("methodName");

            if (method.equals("myMethod"))
            {
               //Call method here!
            }
        }
    }

Надеемся, что это решение решит вашу проблему.

Ответ 4

Ваш вопрос кажется интересным, но вы не можете сделать это, используя Intent. Вы должны понимать, что когда вы начинаете деятельность, она проходит жизненный цикл, который: onCreate()onStart() - >OnResume(). Итак, что вы можете сделать, это запустить этот метод из onResume() следующим образом:

@Override
protected void onResume() {
    super.onResume();
    myMethod();//start your method from here
}

Я просто пытаюсь помочь, дайте мне дополнительную информацию о вашей проблеме, если этот подход не решит вашу проблему.