更新应用程序后 MainApplication 是否总是 运行,即使用户没有打开它?
Will MainApplication always run after updating the app, even if the user does not open it?
我的应用程序有一些小部件,在新版本的应用程序中,这些小部件需要一些额外的数据。我在MainApplication.java
中得到了这个数据,但我担心当用户更新时,如果他们不手动打开应用程序,MainApplication
不会自动运行。但是,由于小部件已经在主屏幕上,并且由于此数据不可用,小部件将崩溃。
我的恐惧是现实的还是 MainApplication
总是 运行 首先(也在调用 AppWidgetProvider.onUpdate()
之前),即使在应用程序自动更新并且用户根本没有更新之后?
当您的应用程序启动时,首先调用 Application
实现的构造函数,然后立即调用 Application::onCreate()
方法。当您说 "will MainApplication
always run first?" 时,我假设这就是您要问的问题。看看文档对 Application::onCreate()
的看法(摘自 here):
Called when the application is starting, before any activity, service,
or receiver objects (excluding content providers) have been created.
此外,此方法不会在您的应用程序更新时调用,据我所知,它不会在您的应用程序完成更新时调用。
另一方面,AppWidgetProvider.onUpdate()
方法在重新安装应用程序后调用。升级你的小部件的代码应该放在里面,所以它会在你的应用程序升级后执行。
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
//Update your widgets here
}
}
我的应用程序有一些小部件,在新版本的应用程序中,这些小部件需要一些额外的数据。我在MainApplication.java
中得到了这个数据,但我担心当用户更新时,如果他们不手动打开应用程序,MainApplication
不会自动运行。但是,由于小部件已经在主屏幕上,并且由于此数据不可用,小部件将崩溃。
我的恐惧是现实的还是 MainApplication
总是 运行 首先(也在调用 AppWidgetProvider.onUpdate()
之前),即使在应用程序自动更新并且用户根本没有更新之后?
当您的应用程序启动时,首先调用 Application
实现的构造函数,然后立即调用 Application::onCreate()
方法。当您说 "will MainApplication
always run first?" 时,我假设这就是您要问的问题。看看文档对 Application::onCreate()
的看法(摘自 here):
Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created.
此外,此方法不会在您的应用程序更新时调用,据我所知,它不会在您的应用程序完成更新时调用。
另一方面,AppWidgetProvider.onUpdate()
方法在重新安装应用程序后调用。升级你的小部件的代码应该放在里面,所以它会在你的应用程序升级后执行。
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
//Update your widgets here
}
}