探究Activity
🎇Activity的基本用法
🎆使用Toast
- Toast是Android系统的提醒方式,不会占用任何屏幕空间。我们可以让按钮点击事件作为Toast的触发点。在onCreate的方法中添加代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1=findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"you clicked 1",Toast.LENGTH_SHORT).show();
}
});
}
}
🎆使用Menu
- 在res文件下先新建一个menu文件夹,在里面创建一个布局文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
- 之后的步骤就是去MainActivity中重写方法,加载布局
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
Toast.makeText(MainActivity.this,"you click"+item.getItemId(),Toast.LENGTH_SHORT).show();
return true;
}
🎇使用Intent
🎆显示Intent
- 显示Intent就是很清晰的来启动Activity,只要在按钮的onClick方法内加上这条代码,我们就可以点击按钮从一个Activity跳转到另一条Activity
Intent intent =new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
🎆隐式Intent
- 隐式Intent来启动Activity是通过Activity一些列抽象的action和category等信息,交给系统去分析Intent,找出合适的Activity去启动
- Intent通过action去寻找合适的Activity启动
- 其中Intent中只能有一个指定的action但能指定多个category
除此之外,我们还可以使用Intent来启动其他程序的Activity(打开百度)
- 其中ThirdActivity,我们可以通过它的按钮点击事件来连接到百度
🎆使用Intent传递数据
- 通过Intent提供的putExtra一系列方法来将我们的数据暂时存到Intent,在启动到另外一个Activity后,把这些数据从Intent中取出就可以了。
- 在按钮点击事件中写如下代码
public void onClick(View view){
String date = "Hello SecondActivity";
Intent intent =new Intent (MainActivity.this , SecondActivity.class);
intent.putExtra("extra_data",data);//extra_data相当于键,data相当于值,在第二个Activity我们通过键来获取值
startActivity(intent);
}
在第二个Activity的onCreate方法中
String extradata=getIntent().getStringExtra("extra_data");
🎇Activity的生命周期
- onCreate( ) : 在每一个Activity中都重写了这个方法,在这个方法中可以完成Activity的初始化操作,加载布局,绑定事件等等。
- onStart():Activity由不可见变为可见的时候调用
- onResume():在Activity准备好和用户进行交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态
- onPause():这个方法在系统准备去启动或者恢复另一个Activity的时候调用
- onStop():在Activity完全不可见的时候调用
- onDestroy() :在Activity被销毁之前调用,之后Activity的状态将变为销毁状态
- onRestart():这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新调用了
🎇Activity的启动模式
standard标准启动模式:每次启动都会创建一个Activity的新实例(无所谓栈中是否已经存在该Activity)
singleTop 栈顶启动模式:如果Activity在栈顶部,再次点击按钮不会增加新的Activity,如果不在栈顶,那么仍然会创建新的实例
例如:你的FirstActivity跳到了SecondActivity,在你的SecondActivity跳到了FirstActivity,这时会有两个FirstActivity
singleTask :该模式下如果发现已经存在了当前Activity实例,那么会把当前Activity移动到栈顶,并把当前Activity前的所有实例出栈
singleInstance:以此模式打开的Activity享有独立的返回栈 。任何程序调用当前Activity,只走其独立的返回栈,和自身的栈无关。
android:launchmode = "singleTask"