Java 查找Android应用程序是如何在应用程序类中启动的

Java 查找Android应用程序是如何在应用程序类中启动的,java,android,Java,Android,非常简单的设置: 使用onCreate()方法扩展应用程序类 一项活动 一个由AlarmManager 应用程序类将在以下两种情况下实例化: 直接启动活动时(应用程序已停止) 当IntentService由AlarmManager的挂起意图启动时(以防应用程序死机) 现在问题: 在应用程序类中,如何获得上面两种情况中的哪一种启动应用程序?是!在IntentService中向您的意图添加额外内容,并在MainActivity中检查它们 将一个int作为您的id放入新的Intent Intent

非常简单的设置:

  • 使用
    onCreate()
    方法扩展应用程序类
  • 一项
    活动
  • 一个由
    AlarmManager
应用程序类将在以下两种情况下实例化:

  • 直接启动活动时(应用程序已停止)
  • 当IntentService由AlarmManager的挂起意图启动时(以防应用程序死机)
  • 现在问题:
    在应用程序类中,如何获得上面两种情况中的哪一种启动应用程序?

    是!在
    IntentService
    中向您的意图添加额外内容,并在MainActivity中检查它们

    将一个
    int
    作为您的id放入新的
    Intent

    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    Bundle b = new Bundle();
    b.putInt("key", 1); //Your id
    intent.putExtras(b); //Put your id to your next Intent
    startActivity(intent);
    finish();
    
    然后在新的
    活动中获取id

    Bundle b = getIntent().getExtras();
    int value = -1; // or other values
    if(b != null)
        value = b.getInt("key");
    

    好了,您无法从自定义
    应用程序的
    子类的
    onCreate()
    中判断这两种情况中的哪一种导致了流程启动
    Application
    没有要调用的
    heyWhatStartedMe()
    类方法,
    onCreate()
    也没有传递任何指示进程启动原因的消息


    我不太清楚你为什么需要确定差异<在主应用程序线程上调用
    Application
    的code>onCreate()
    ,因此无论是哪个组件触发了进程创建,您都不希望在那里执行任何缓慢的操作。如果您想做的工作很快,您可以一直做,或者将该逻辑移到
    活动或
    IntentService

    好了,您无法从自定义
    应用程序的
    子类的
    onCreate()
    中判断这两个案例中的哪一个导致了您的流程启动。呃,如此快速和@commonware本身,我非常高兴:)也很难过,因为这意味着没有解决方案:(我不太清楚您为什么需要确定差异。
    onCreate()
    应用程序的
    在主应用程序线程上被调用,因此无论是哪个组件触发了进程创建,您都不希望在主应用程序线程上执行任何缓慢的操作。如果要执行的工作很快,您可以一直执行,或者将该逻辑移动到
    活动
    IntentService
    。是的,我将不得不改变一个逻辑,只需要一次初始化,并且只有在不是由特定服务启动时,我才认为这是可能的。@Commonware和顺便问一下,为什么不将其添加为答案?“这是不可能的”答案的类型也是我所理解的答案…谢谢你的回答,但看起来你完全错过了这个问题。意图服务与活动无关。这都是关于应用程序类的。你不是从意图服务开始你的活动吗?不,服务做它自己的事情,与活动无关