私がこのようなことをすると:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//init something else here if you want
}
@Override
public void onTerminate() {
super.onTerminate();
//terminate something else here if you want
}
}
そして、このクラスの名前を次のようにマニフェスト ファイルに含めます。
<application
android:name="com.packagename.MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
これは、アプリの実行前後に必要なコードを実行する方法を効果的に提供していますか?
編集:onCreate()
ステートメントに足を踏み入れると、コードに次のように表示されます。
/**
* Called when the application is starting, before any activity, service,
* or receiver objects (excluding content providers) have been created.
* Implementations should be as quick as possible (for example using
* lazy initialization of state) since the time spent in this function
* directly impacts the performance of starting the first activity,
* service, or receiver in a process.
* If you override this method, be sure to call super.onCreate().
*/
@CallSuper
public void onCreate() {
}
/**
* This method is for use in emulated process environments. It will
* never be called on a production Android device, where processes are
* removed by simply killing them; no user code (including this callback)
* is executed when doing so.
*/
@CallSuper
public void onTerminate() {
}
編集 2:アプリケーション コンテキストをグローバルな静的変数として保存することもできます。
public class MyApp extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
MyApp.context = getApplicationContext();
}
public static Context getAppContext() {
return MyApp.context;
}
@Override
public void onTerminate() {
super.onTerminate();
}
}