2017-02-03 2 views
0

私は私のメインのプロジェクトからのApplicationクラスを拡張する方法を知っているが、現在、私は(コードを切り離すための)ライブラリプロジェクトからも拡張していますので、私はこの方法で行います。拡張アプリケーション

1 - public class MyMainApplication extends LibraryApp {...

2 - public class LibraryApp extends Application {...

そして、私のマニフェスト:実際にはすべてがうまく動作しますが、私は、私を知ってほしい

<application 
    android:name="com.something.MyMainApplication" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyMainAppTheme"> 

このコーディングは、Androidアーキテクチャなどの何かを壊している可能性があります。

答えて

1

LibraryAppクラスでオーバーライドするすべてのメソッドでsuper.xx()を呼び出すことが確実であれば、問題なく動作します。

しかし、Applicationクラスを使用すると、基本的にユーザーが非常に制限されます。多くのライブラリは独自のApplicationクラス(あなたのようなもの)を使用しています。アプリケーションクラスが1つしかないことがあり、Javaでは1つのクラスしか拡張できないため、Applicationクラスを使用する1つのライブラリに制限されます。

本当にApplicationクラスを拡張する必要がありますか?
アプリケーションコンテキストをパラメータとするシングルトン初期化子クラスを作成する方がよいでしょう。それでもコンテキストにアクセスでき、必要なものを登録することができます。ユーザーはApplicationクラスの拡張に限定されません。

+0

はい、私のライブラリプロジェクトに含まれているサードパーティのライブラリのアプリケーションクラスの原因は、公式ドキュメントに見られるように、そこに初期化されています。 – Billyjoker

関連する問題