DroidParts-Android 8-in-1用ライブラリ

この記事では、Androidアプリケーションの開発に特化したシリーズを開きます。 しかし、明らかに、左後のmNogoyによって書かれたGoogle Playの典型ではありませんが、正確でエレガントなアプリケーションです。 この点については、スイスの8ブレードAndroidライブラリナイフであるDroidPartsが役立ちます。



  1. 依存性注入 :システムおよびカスタム依存性の初期化。
  2. SQLiteのオブジェクトリレーショナルマッピング :CRUD操作は「そのまま」;
  3. FragmentsActionBar Sherlockのサポート。
  4. JSONの単純な(de) シリアル化
  5. AsyncTasks、例外処理を伴うIntentService。
  6. JSONをサポートするRESTful HTTPクライアント
  7. L. ogタグなし、AndroidManifestで設定可能。
  8. キャッシュされた非同期httpローダー、ビューおよびインテントヘルパーなどのユーティリティ




ほんの1時間前*



ライブラリの最初のバージョンがリリースされましたが、最初のバージョンは...



長い間、私は次のスタイルのコードでオールドスクールのアプローチに取り組んでいました。



 private Button btn; onCreate(Bundle b) { super.onCreate(b); btn = (Button)findViewById(R.id.btn); }
      
      





彼がRoboGuiceを使用したプロジェクトに参加するまで。 そして後:



 @InjectView private Button btn;
      
      





自発的な帰還はありませんでした。



一方、RoboGuiceはサイズに神経質であり、Fragmentsをサポートする未リリースのバージョン2.0です。 また、ORMにはサードパーティのライブラリが必要でした。 また、Gsonを使用すると、JSONを簡単に操作できます。 これが間違っていると、複数のアプリケーションサイズにわたって依存関係がプルされます。



一般に、「 何かを正しくしたい場合は自分でやる 」という原則に従って、私はただ楽しみのために始めました。



そこから来たものはgithub.com/yanchenko/droidpartsのバージョン0.5で利用可能であり、以下から構成されています:

後者の検討を進めます。



はじめに git clone github.com/yanchenko/droidparts.git



git clone github.com/yanchenko/droidparts.git



base



extra



sample



からEclipseプロジェクトをインポートしsample





それらの最初の2つはライブラリ(Androidライブラリプロジェクト)です。

本格的なアプリケーションproject.properties



後者のproject.properties



では、 proguard.config=../proguard.cfg



という行に注意してproguard.config=../proguard.cfg



これは、.apkへのエクスポート時に使用される変更された難読化設定を示しています。



DroidPartsにはカスタムorg.droidparts.Applicationが含まれていますが、アプリケーション自体でインジェクションが必要な場合にのみ継承することは理にかなっています。 そのような単純なアプリケーションの必要性はありません。 ただし、独自の依存関係を注入する必要があります。

AndroidManifest.xml



行:



 <meta-data android:name="droidparts_dependency_provider" android:value=".DependencyProvider" />
      
      





org.droidparts.inject.AbstractDependencyProvider



を継承し、必要なオブジェクトのファクトリーであるクラスを宣言します。



スキームは単純です。各DependencyProvider



'aメソッドは、インジェクションに使用できるクラスの1つのインスタンスを返します。 2つのタイプのメソッドがサポートされています:パラメーターなしで呼び出され、単一のContext



パラメーターで呼び出されます。 アクティビティにインジェクションが行われた場合、渡されるコンテキストは正確にそのコンテキストになります。これは、UIに関連付けられた依存関係にとって重要です。



以下を含むコードの例 シングルの実装方法(シングルトン、 org.droidparts.sample.DependencyProvider



、翻訳用語が大好きです)、 org.droidparts.sample.DependencyProvider



直接確認できます。

システムリソースとサービスの注入には、もちろん、追加のメソッドは必要ありません。



インジェクション自体は、 Injector.get().inject(...)



メソッドのいずれかを呼び出すときに@Inject...



によって注釈が付けられたフィールドに対して実行されます。 Activity



Service



などから継承して、手動呼び出しをスキップできます。 org.droidparts



から。

アプリケーションorg.droidparts.sample.activity.EntryListActivity



では、このアプローチの例です。

次のことに注意してください。



  @Override public void onPreInject() { setContentView(R.layout.activity_entry_list); }
      
      





onCreate(...)



へのすべての呼び出しは、インジェクターの完了後に発生します。 この場合、これは未定義のView



つながりView







この混oticとした控えめな表現については、入門記事を完了します。 ライブラリの使用を開始するのに十分なDI、ORM、およびJSONシリアル化の例は、アプリケーションにあります。 詳細なレビューとベストプラクティスは、さらなる記事のトピックです。

近い将来、 Activity



用に独自のコンストラクタを置き換える方法を説明します(ヒント:このパターンはアプリケーションにあります)。



私はここで質問に答えます: stackoverflow.com/questions/tagged/droidparts



ありがとう、そしてより少ないコードを書いてください! (:



*昨夜現在。



All Articles