studio que putextra intents intent getintextra desde crear boton activity abrir android android-intent

android - que - ¿Qué es packageContext en Intent#(Context packageContext, Class<?> Cls)?



intents android (4)

El documento dice:

packageContext Un contexto del paquete de aplicación que implementa esta clase.

Pero, ¿qué significa? ¿Qué clase es "esta clase"?

¿Por qué funciona la new Intent(this,XXX.class) ?


Creo que está destinado a ser el contexto relacionado con el paquete de aplicación que implementa la clase actual.

Por ejemplo, si está en una clase de perro y tiene la siguiente estructura de paquete com.mycompany.dogfinder.dog, entonces el contexto del paquete se refiere al contexto asociado con el paquete que implementa la clase de perro. En este caso, el contexto asociado con la clase dog sería el contexto relacionado con el paquete de aplicación com.mycompany.dogfinder.

Esto me tomó un poco de tiempo para entender lo que se estaba diciendo, pero creo que eso es lo que significa.


Para iniciar la actividad de la actividad:

public SomeActivity extends Activity{ ... private startAnother(){ Intent intent = new Intent(getApplicationContext(), AnotherActivity.class); startActivity(intent);// works fine getApplicationContext().startActivity(intent)//works too, //but flag Intent.FLAG_ACTIVITY_NEW_TASK needed and new you will get //backstack offcourse } ... }

Intención de usar el contexto para crear ComponentName solamente:

public Intent(Context packageContext, Class<?> cls) { mComponent = new ComponentName(packageContext, cls); } // Identifier for a specific application component public ComponentName(Context pkg, Class<?> cls) { mPackage = pkg.getPackageName(); mClass = cls.getName(); }


Piense en el contexto como un estado de su aplicación. Se utiliza para manipular recursos y servicios utilizados por la aplicación, como bases de datos, archivos locales, cargadores de clases, preferencias compartidas, etc.

Cuando alguien te llama y pregunta por tu tiempo, ¿qué es lo primero que dices ... a qué se refiere esto? ¿O cuál es el contexto de esta conversación? Dependiendo del contexto, puede decidir si vale la pena continuar con la llamada o no. Si continúa, la conversación debería ser relativamente fácil ya que ya conoce el contexto.

Lo mismo ocurre con los intentos. ¿Qué es una intención? Algo que tiene una intención: uno de ellos es iniciar una actividad.

Intent intent = new Intent(getApplicationContext(),ActivityTwo.class); startActivity(intent);

Si esto hace que su concepto sea un poco más claro, entonces continuemos con su pregunta y la API real -

Intent#(Context packageContext, Class<?> cls)

Como tiene avisos, el primer argumento debe ser de tipo Context que sabemos es una clase abstracta. Por lo general, puede pasar cualquier clase concreta que amplíe la clase de Context clase de Activity es una de ellas (en cuyo caso simplemente use this en el argumento).


Puede pasar cualquier objeto de Context que haya obtenido de cualquiera de las clases de su aplicación. Por lo tanto, puede usar un objeto Actividad, Servicio o puede llamar a getApplicationContext () y pasar el objeto Contexto devuelto al constructor Intent.