1. android的activity执行的入口为oncreate()
2.activity的生命周期:
3. activity生命周期中回调函数(callbacks)介绍
oncreate():activity第一次创建时调用
onstart():activity对用户可见时调用
onresume():用户与应用进行交互时调用
onPause():当前一个activity被恢复,当前活动别暂停时调用,暂停后的activity无法接收用于的任何输入,并且无法执行任何代码
onStop():当一个Activity不在可见时调用该回调函数
onDestroy():在系统销毁Activity之前调用
onRestart():当一个activity被stop之后,重新开始时执行
4. 启动另外一个Activity的几种方式:
第一种 最为常见的一种
startActivity(new Intent(当前Act.this,要启动的Act.class));
第二种 通过Intent的ComponentName
ComponentName cn = new ComponentName("当前Act的全限定类名","启动Act的全限定类名") ;
Intent intent = new Intent() ;
intent.setComponent(cn) ;
startActivity(intent) ;
目前对这种方法的使用了解不多,待以后逐步学习吧
第三种 初始化Intent时指定包名:
Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName("当前Act的全限定类名","启动Act的全限定类名");
startActivity(intent);
第四种 通过Intent-filter的Action,Category或data来实现 这个是通过Intent的 intent-filter**来实现的
第五种 直接通过包名启动apk的
Intent intent = getPackageManager().getLaunchIntentForPackage
("apk第一个启动的Activity的全限定类名") ;
if(intent != null) startActivity(intent) ;
5. Activity之间传送数据
另外接受整型数据时要有默认值,直接getIntExtra("key")是不行的,如下图:
6. 多个Activity之间的交互
比如你在MainActivity里这样写(第16、17、22行):
public class MainActivity extends AppCompatActivity {
// Add a different request code for every activity you are starting from here
private static final int SECOND_ACTIVITY_REQUEST_CODE = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// "Go to Second Activity" button click
public void onButtonClick(View view) {
// Start the SecondActivity
Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, SECOND_ACTIVITY_REQUEST_CODE);
}
// This method is called when the second activity finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// check that it is the SecondActivity with an OK result
if (requestCode == SECOND_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) { // Activity.RESULT_OK
// get String data from Intent
String returnString = data.getStringExtra("keyName");
// set text view with string
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(returnString);
}
}
}
}
在SecondActivity中这样写(17-20行):
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
// "Send text back" button click
public void onButtonClick(View view) {
// get the text from the EditText
EditText editText = (EditText) findViewById(R.id.editText);
String stringToPassBack = editText.getText().toString();
// put the String to pass back into an Intent and close this activity
Intent intent = new Intent();
intent.putExtra("keyName", stringToPassBack);//如果没有需要返回的数据,这一行代码可以没有
setResult(RESULT_OK, intent);
finish();
}
}
总结以下,如下图所示:
这样就完成了多个Activity之间的交互。