рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде, рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЦреЛрд▓рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди Google Play рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ, рд▓рд┐рдЦрд┐рдд, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдмрд╛рдПрдВ рдмрд╛рдПрдБ mNogoy рджреНрд╡рд╛рд░рд╛, рд▓реЗрдХрд┐рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛ рд╕рд╣реА рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрд╡рд┐рд╕ 8-рдмреНрд▓реЗрдб Android рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЪрд╛рдХреВ
DroidParts , рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛:

- рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди : рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдХрд╕реНрдЯрдо рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг;
- SQLite рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ : CRUD рдСрдкрд░реЗрд╢рди "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░";
- рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рдПрдХреНрд╢рдирдмрд╛рд░ рд╢рд░реНрд▓рдХ;
- JSON рдХрд╛ рд╕рд░рд▓ (рдбреА) рдХреНрд░рдорд╛рдВрдХрди ;
- AsyncTasks, рдЕрдкрд╡рд╛рдж рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде IntentService;
- JSON рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╖реНрдард┐рдд HTTP рдХреНрд▓рд╛рдЗрдВрдЯ ;
- рдПрд▓ред рдУрдЧ рдПрдХ рдЯреИрдЧ рдХреЗ рдмрд┐рдирд╛, AndroidManifest рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕;
- рдХреИрд╢реНрдб рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ http-рд▓реЛрдбрд░, рд╡реНрдпреВ рдФрд░ рдЗрдВрдЯреЗрдВрдЯ рд╣реЗрд▓реНрдкрд░реНрд╕ рдЬреИрд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ ред
рд╕рд┐рд░реНрдл рдПрдХ рдШрдВрдЯреЗ рдкрд╣рд▓реЗ
*
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ ...
рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореИрдВ рдкреБрд░рд╛рдиреЗ рд╕реНрдХреВрд▓ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдерд╛, рдЬрд┐рд╕рдХреА рд╢реИрд▓реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА:
private Button btn; onCreate(Bundle b) { super.onCreate(b); btn = (Button)findViewById(R.id.btn); }
рдЬрдм рддрдХ рд╡рд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд░реЛрдмреЛрдЧреНрдпреВрдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рдерд╛ред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж:
@InjectView private Button btn;
рдХреЛрдИ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╡рд╛рдкрд╕реА рдирд╣реАрдВ рдереАред
рджреВрд╕рд░реА рдУрд░, RoboGuice, Fragments рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЖрдХрд╛рд░ рдФрд░ рдЕрднреА рднреА рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдШрдмрд░рд╛рдпрд╛ рд╣реБрдЖ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдУрдЖрд░рдПрдо рдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ GSON рдЖрд╕рд╛рди JSON рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕реЗ рдЧрд▓рдд рдХрд░реЗрдВ, рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЦреАрдВрдЪреЗрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, "
рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╕рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрд╡рдпрдВ рдХрд░реЗрдВ " рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ
рд╕рд┐рд░реНрдл рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдХреАред
рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЖрдпрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг
0.5 рдореЗрдВ
github.com/yanchenko/droidparts рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдЖрдзрд╛рд░ - DI, ORM, рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рдШрдЯрдХ;
- рдЕрддрд┐рд░рд┐рдХреНрдд - рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реЗрд╕реНрдЯрдлреБрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ;
- support-actionbarsherlock - рдбрд┐рдлрд╝реЙрд▓реНрдЯ ActionBarSherlock рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ Fragments, ActionBar рдФрд░ рдЯреИрдм рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди;
- рдирдореВрдирд╛ рдПрдХ рдирдореВрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред
рд╣рдо рдмрд╛рдж рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд░рддреЗ рд╣реИрдВ
git clone github.com/yanchenko/droidparts.git
git clone github.com/yanchenko/droidparts.git
рдФрд░
base
,
extra
,
sample
рд╕реЗ рдПрдХреНрд▓рд┐рдкреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдкреЛрд░реНрдЯ рдХрд░реЗрдВред
рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдПрдВрдбреНрд░реЙрдЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рд╣реИрдВред
рдмрд╛рдж рдХреЗ
project.properties
, рдЬреЛ рдПрдХ рдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рд▓рд╛рдЗрди
proguard.config=../proguard.cfg
, рдЬреЛ .apk рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╢реЛрдзрд┐рдд рдСрдмрдлрд╕рдХреЗрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐ DroidParts рдореЗрдВ custom
org.droidparts.Application
, рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╣реА рд╣реЛрддреА рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдРрд╕реА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдПрдХ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
AndroidManifest.xml
рд▓рд╛рдЗрди:
<meta-data android:name="droidparts_dependency_provider" android:value=".DependencyProvider" />
рдПрдХ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ
org.droidparts.inject.AbstractDependencyProvider
рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
org.droidparts.inject.AbstractDependencyProvider
рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИред
рдпрд╣ рдпреЛрдЬрдирд╛ рд╕рд░рд▓ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ
DependencyProvider
рд╡рд┐рдзрд┐ рдПрдХ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдПрдХрд▓
Context
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдПрдХ рдЗрдВрдЬреЗрдХреНрд╢рди рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдЖрдИ рд╕реЗ рдЬреБрдбрд╝реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рд╕рд╣рд┐рдд рдХреЛрдб рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ
рдПрдХрд▓ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (
рдПрдХрд▓ , рд╣рд╛рд╣рд╛рд╣рд╛, рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдХреА рд╢рд░реНрддреЛрдВ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ), рдЖрдк рд╕реАрдзреЗ
org.droidparts.sample.DependencyProvider
рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЛрдВ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ
Injector.get().inject(...)
рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ
@Inject...
рджреНрд╡рд╛рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛
@Inject...
ред
Activity
,
Service
, рдЖрджрд┐ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдореИрдиреБрдЕрд▓ рдХреЙрд▓ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
org.droidparts
ред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ
org.droidparts.sample.activity.EntryListActivity
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
@Override public void onPreInject() { setContentView(R.layout.activity_entry_list); }
рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЗ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдХреЙрд▓
onCreate(...)
рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
View
рд▓рд┐рдП рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдЕрд░рд╛рдЬрдХ рд╕рдордЭ рдкрд░, рдореИрдВ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдЖрдИ, рдУрдЖрд░рдПрдо рдФрд░ рдЬреЗрдПрд╕рдПрди рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдЙрджрд╛рд╣рд░рдг, рдЖрд╡реЗрджрди рдореЗрдВ рд╣реИрдВред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдЖрдЧреЗ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИред
рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ
Activity
рд▓рд┐рдП рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдВрдХреЗрдд: рдпрд╣ рдкреИрдЯрд░реНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╣реИ)ред
рдореИрдВ рдпрд╣рд╛рдВ рдпрд╛ рд╡рд╣рд╛рдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛:
stackoverflow.com/questions/tagged/droidparts ред
рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдХреГрдкрдпрд╛ рдХрдо рдХреЛрдб рд▓рд┐рдЦреЗрдВ! (:
* рдХрд▓ рд░рд╛рдд рддрдХред