如果 activity 已经打开,请避免再次打开 Activity
Avoid opening Activity over again if the activity is already opened
我使用菜单栏打开了相机 activity。但是在它打开后,如果我单击菜单栏,它会在其顶部打开。当我按下后退按钮时,它会显示相机 activity 两次。
有没有我可以使用的标志?
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.nav_barcode) {
Intent i = new Intent(this, Scanner.class);
startActivityForResult(i, 1);
}
}
在 Manifest 文件中为您的相机 activity 添加 android:launchMode="singleTop"
。
启动时使用标志 Intent.FLAG_ACTIVITY_SINGLE_TOP
activity。
我使用菜单栏打开了相机 activity。但是在它打开后,如果我单击菜单栏,它会在其顶部打开。当我按下后退按钮时,它会显示相机 activity 两次。
有没有我可以使用的标志?
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.nav_barcode) {
Intent i = new Intent(this, Scanner.class);
startActivityForResult(i, 1);
}
}
在 Manifest 文件中为您的相机 activity 添加 android:launchMode="singleTop"
。
启动时使用标志 Intent.FLAG_ACTIVITY_SINGLE_TOP
activity。