gpt4 book ai didi

android - 在应用程序关闭并且服务在 bg 中运行后,如何强制执行 Application onCreate?

转载 作者:行者123 更新时间:2023-12-03 22:29:38 25 4
gpt4 key购买 nike

基本上我有一个运行前台服务的应用程序。
当我启动应用程序时,我需要在应用程序的 onCreate 中进行特定于 session 的初始化。方法。
当我关闭应用程序时,服务会继续运行(期望的行为),但是,当我从启动器/从我的通知中重新打开应用程序时,应用程序 onCreate不会再次被调用。
我的问题是:

  • 如何执行应用程序 onCreate即使有服务正在运行,也会再次调用? (服务可能会保留对应用程序对象的引用,对吧?)
  • 有没有办法在 Application 类中获取应用程序已重新启动但来自服务的指示?
  • 您还能想到哪些其他解决方案?

  • 我的服务在 AndroidManifest.xml :
    <service android:name=".MyService"
    android:exported="false"/>
    我的服务 onStartCommand :
        createNotificationChannel();
    Intent notificationIntent = new Intent(this, MyActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
    .setContentTitle("My Service")
    .setContentText("Service")
    .setSmallIcon(R.drawable.ic_android)
    .setContentIntent(pendingIntent)
    .build();
    startForeground(1, notification);

    最佳答案

    您可以创建 ProcessLifeCycleOwner里面 Application并监听生命周期事件。您可能还需要为一个类设置一个标志并从一个方法中获取该值,以检查用户是否在按下主页按钮或使用通知启动应用程序后返回

    class MyApp: Application() {

    override fun onCreate() {
    super.onCreate()

    ProcessLifecycleOwner
    .get()
    .lifecycle
    .addObserver(ApplicationObserver())
    }

    inner class ApplicationObserver : LifecycleObserver {

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onStop() {
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {

    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreate() {

    }


    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy() {

    }
    }
    }

    关于android - 在应用程序关闭并且服务在 bg 中运行后,如何强制执行 Application onCreate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62497167/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com