检查应用何时开始?

时间:2015-11-22 17:28:03

标签: java android string multithreading optimization

我必须在应用启动时立即运行我的应用程序。我知道onCreate方法,但每次创建活动时都会调用它整个应用程序本身是否有onCreate方法?

假设我想要运行一个进程,我们可以在应用程序启动时将其命名为A.我 通常会将其放在我的应用的第一个活动中onCreate,但每当我返回到我的第一个时,它会被多次调用活性。

 1. App starts->
 2. First Activity starts->
 3. Process A starts
 4. First Activity starts->
 5. Process A starts

在这里,您可以看到,每次第一个活动开始时,流程A都会启动。相反,我有什么方法可以做这样的事情吗?

 1. App starts
 2. Process A starts
 3. First activity starts
 4. Second activity starts
 5. etc...Process A never starts again, until the app is opened again

现在,有没有办法可以让流程A重新开始,即使如果应用程序消失了?例如:

 1. App starts
 2. Process A starts
 3. First activity starts
 4. Second activity starts
 5. User presses home menu
 6. App starts again, but since user never closed app in multitasking, `process A never started`

感谢您在我如何实现这一目标方面的专业帮助,

Ruchir

2 个答案:

答案 0 :(得分:1)

您必须创建一个自定义的Application类,方法是创建一个扩展Application的类,然后覆盖onCreate(就像您对任何活动一样)并将该代码放入。

public class MyApplication extends Application {
public void onCreate() {
    //your process A code
}
}

您还必须告诉清单您正在使用自定义应用程序类。您可以在AndroidManifest.xml文件中执行此操作,您必须将name元素设置为新Application类的位置:

<application
    android:name="com.packageName.example.MyApplication"
    android:label="@string/app_name"
    android:logo="@drawable/ic_launcher_no_text" >

答案 1 :(得分:0)

Archit解决方案似乎已经足够好了。 你也可以尝试运行你的第一个&#39;通过跟随How to create an Android Activity and Service that use separate processes并提及类别android:name =&#34; android.intent.category.DEFAULT&#34;在不同进程中作为LAUNCHER活动的活动它会在任何活动出现之前启动。见

Two launcher activities了解如何在有两个启动器活动时使用类别DEFAULT。

这应该注意按主页键并杀死应用案例。

我不确定哪种方式最适合你。可能是Archit的答案还是这个答案。你自己做一些研究。