【问题标题】:Check when app starts?检查应用程序何时启动?
【发布时间】:2016-02-24 18:42:06
【问题描述】:

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

假设我想运行一个进程,我们可以将它称为 A,在应用程序的开头。我通常将它放在我的应用程序的第一个活动中,在onCreate 中,但是每当我返回到我的第一个活动时,它都会被多次调用。

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

在这里,您可以看到每次 First Activity 启动时进程 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`

感谢您的专家帮助我如何实现这一目标,

鲁基尔

【问题讨论】:

  • 您想在用户第一次启动时只启动一次进程,并且您不想让它在下次启动时再次启动吗?或者您在上一个过程的第 6 步中所说的“process A never started”是什么意思??
  • @cgr 我的意思是,如果用户实际上关闭了应用程序,然后再次打开它,音量应该会增加。但是,如果用户只是进入主菜单,然后返回应用程序,则不要启动进程 a
  • @cgr,你能实现你想要的吗?我很好奇什么解决方案对你有用,所以我记住了这一点。 Archit 的解决方案好吗?

标签: java android string multithreading optimization


【解决方案1】:

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

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

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

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

【讨论】:

  • 即使我只是转到主菜单并返回应用程序,myApplication 会被调用吗?没有实际关闭应用程序?
  • MyApplication 在应用程序的整个生命周期内只被调用一次
  • 好的,所以如果我只是按下主页按钮,然后返回应用程序,MyApplication不会被调用,对吧?
  • 是的,绝对不叫
  • 好的,我会试试这个,然后标记你的最佳答案。感谢您的帮助
【解决方案2】:

架构解决方案似乎已经足够好了。 您还可以尝试通过关注How to create an Android Activity and Service that use separate processes 并在其中提及类别 android:name="android.intent.category.DEFAULT" 以在不同进程中将您的“第一个”活动作为 LAUNCHER 活动运行,以便它会在任何活动出现之前立即启动.见

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

这应该注意按下主页键并杀死应用程序。

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

【讨论】:

    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2015-05-14
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多