Android如何在没有意图或后台的情况下启动活动

3
假设我有两个活动A和B,其中A包含一个按钮。我希望在按下该按钮时启动活动B,而不需要使用intent。

1
唯一的方法是使用意图。 - Luiz Fernando Salvaterra
我可以知道为什么吗?你在发明什么吗? - Akash Dubey
5个回答

5
根据官方文档:
Intent是要执行的操作的抽象描述。它可以与startActivity一起使用来启动Activity,broadcastIntent将其发送到任何感兴趣的BroadcastReceiver组件,以及startService(Intent)或bindService(Intent,ServiceConnection,int)来与后台服务通信。
Intent提供了一种在不同应用程序之间的代码之间进行延迟运行时绑定的方法。它最重要的用途是在启动活动时,它可以被认为是活动之间的黏合剂。它基本上是一个被动数据结构,保存要执行的操作的抽象描述。
因此,您必须使用它来打开活动,没有异常或变通方法,如果这样做,您将忽略整个系统架构。

4
如果不使用Intent的原因是不想让用户重新进入之前的活动,您可以在完成工作后使用finish()来结束该活动。
if(currentUser == null){
    startActivity(new Intent(MainActivity.this,StartActivity.class));
    finish();
}

所以用户将无法再返回

如果您想在活动结束时执行一些代码

您可以使用onDestroy()覆盖方法,有时它也会在活动被Android自身杀死时调用,因此您可以添加

isFinishing()函数

onDestroy()方法中,它检查应用程序是通过调用finish()返回true还是通过其他任何方法返回false关闭的,然后您可以轻松指定每种情况的代码。

@Override
protected void onDestroy() {
    super.onDestroy();
    if(isFinishing()){
        // Activity is being destroyed by the function `finish()`
        // What to do...
    }else{
        // Activity is being destroyed anonymously without `finish()`
        // What to do...
    }
}

4

没有意图,就没有办法从另一个活动开始一个活动。


2
将您的活动放在一个片段中,并从按钮启动该片段。

2
这是启动任何Activity的可能方式: 1. 使用Intent对象启动Activity。
startActivity(new Intent(Activity_A.this, Activity_B.class));

第二个

Intent intent = new Intent(Activity_A.this, Activity_B.class);
startActivity(intent);

第三方

Intent intent = new Intent(Activity_A.this, Activity_B.class);
startActivityForResult(intent,code);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接