https://start.insert-koin.io/#/quickstart/android-java
开始
Koin in 5 minutes (5分钟快速入手Koin)
Getting Started (开始)
这个教程将会告诉你如何使用Koin注入和检索组件来编写一个Android Java application。
可以直接在Github上查看项目或者下载zip
🚀 Go to Github or download Zip
通过如下方式添加 Koin Android 的依赖:
1
2
3
4
5
6
7
8
| // Add Jcenter to your repositories if needed
repositories {
jcenter()
}
dependencies {
// Koin for Android
compile "org.koin:koin-android:$koin_version"
}
|
让我们创建一个 HelloRepository
来提供一些数据:
1
2
3
4
5
6
7
| interface HelloRepository {
fun giveHello(): String
}
class HelloRepositoryImpl() : HelloRepository {
override fun giveHello() = "Hello Koin"
}
|
让我们创建一个Java presenter类,来消费这些数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class MyJavaPresenter {
private HelloRepository repository;
public MyJavaPresenter(HelloRepository repository) {
this.repository = repository;
}
public String sayHello(){
String hello = repository.giveHello();
return hello+" from "+this;
}
}
|
使用 module
函数来声明一个module。让我们来声明我们的第一个组件:
1
2
3
4
5
6
7
8
| val appModule = module {
// single instance of HelloRepository
single<HelloRepository> { HelloRepositoryImpl() }
// Simple Presenter Factory
factory { MyJavaPresenter(get()) }
}
|
我们将 MyJavaPresenter
类声明成 factory
来让每当我们的Activity需要一个时就创建一个新的对象。
现在我们已经有了一个module,我们就可以使用Koin了。打开你的Application类,或者创建一个(不要忘了在你的Manifest.xml中声明它)。然后只需要调用 startKoin()
函数:
1
2
3
4
5
6
7
8
9
10
11
| class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Start Koin
KoinApplication koin = KoinAndroidApplication.create(this)
.modules(appModule);
startKoin(new GlobalContext(), koin);
}
}
|
MyJavaPresenter
组件将会被通过 HelloRepository
实例所创建。为了在我们的Activity中获取到它,就需要使用 by inject()
委托注入器来注入它:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| // import inject
import static org.koin.java.standalone.KoinJavaComponent.inject;
public class JavaActivity extends AppCompatActivity {
private Lazy<MySimplePresenter> presenter = inject(MySimplePresenter.class);
private Lazy<MyJavaPresenter> javaPresenter = inject(MyJavaPresenter.class);
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
//...
}
}
|
by inject()
函数允许我们在Android组件(Activity, fragment, Service…)运行时再来检索Koin实例。
get()
函数在这可以非延迟的直接检索一个实例。