即使用户没有打开它,MainApplication会在更新应用程序后始终运行吗?

问题描述 投票:1回答:1

我的应用程序有一些小部件,在新版本的应用程序中,需要一些额外的数据。我在MainApplication.java中获取此数据,但我担心当用户更新时,如果他们不手动打开应用程序,MainApplication将无法自动运行。但是,由于小部件已经在主屏幕上,并且由于此数据将不可用,因此小部件将崩溃。

我的恐惧是现实的还是MainApplication总是先运行(也就是在调用AppWidgetProvider.onUpdate()之前),即使在应用程序自动更新且用户根本没有它之后?

android android-widget android-lifecycle
1个回答
1
投票

启动应用程序时,首先调用Application实现的构造函数,然后调用Application::onCreate()方法。当你说“MainApplication会先跑吗?”时,我假设你问的是这个问题。看看文档中关于Application::onCreate()的内容(取自here):

在应用程序启动时调用,在创建任何活动,服务或接收方对象(不包括内容提供程序)之前调用。

此外,当您的应用更新时,系统不会调用此方法,据我所知,当您的应用完成更新时,系统不会调用此方法。

另一方面,在重新安装应用程序后调用AppWidgetProvider.onUpdate()方法。升级小部件的代码应放在其中,因此它将在应用程序升级后执行。

public class WidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        //Update your widgets here
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.