android studio mvp 代码模板,这是一个Android Studio的MVP模板

Android Studio MVP Template

This is an Android Studio template for MVP.

If you are looking for the first version, without presenter survival, please download the first release. Note that version 2 (current one) is not compatible with version 1.

Here's the hierarchy it follows:

com.company.app

+-- injection

| - ActivityScope

| - AppComponent

| - AppModule

| - FragmentScope

| - MainViewComponent

| - MainViewModule

+-- interactor

| +-- impl

| - MainViewInteractorImpl

| - BaseInteractor

| - MainViewInteractor

+-- presenter

| +-- impl

| - BasePresenterImpl

| - MainViewPresenterImpl

| - BasePresenter

| - MainViewPresenter

+-- view

| +-- impl

| - BaseActivity

| - BaseFragment

| - MainActivity

| - MainView

| - YourApp

Prerequisites

You must use Dagger 2 for dependency injection and AppCompat for annotations and base classes.

Installation

For Mac:

If you have a standard Android Studio installation:

Just run the install script at the root of this repository:

./install.sh

Manual installation:

Just copy all 3 directories MVPFragment, MVPActivity and MVPBoilerplate to $ANDROID_STUDIO_FOLDER$/Contents/plugins/android/lib/templates/activities/

For Windows:

Just copy all 3 directories MVPFragment, MVPActivity and MVPBoilerplate to $ANDROID_STUDIO_FOLDER$\plugins\android\lib\templates\activities\

How to use

1. Generate base boilerplate

First of all, create the base hierarchy and classes using MVP Boilerplate from the root package folder. This needs to be done only once per project:

625332134c6f4d4600884b99daebf603.png

It will generate an App class that you should use as your Application, an ActivityScope, FragmentScope, AppModule and AppComponent for injection, a BaseActivity, BaseFragment, BasePresenter, BasePresenterImpl and BaseInteractor. It also generates the common classes for presenter persistancy (PresenterFactory and PresenterLoader).

Be sure to use the generated App as your Application into your manifest!

2. Create your first activity

Then you can create a new MVP Activity. It will create:

An Activity

A layout for your Activity

A Component and a Module for Dagger 2 injection

A View interface for your Activity

A Presenter interface and default implementation class

An Interactor interface and default implementation class for your model

It's important that you create it from the root package, otherwise it will re-create the whole MVP hierarchy under your subpackage which is not what you want.

Presenter lifecycle (Important!)

Your presenter will be kept across activity re-creation on orientation changes using a Loader. For more details about how its done, read Antonio Gutierrez's article.

It means that:

You want to be sure to update your view state on each onStart call of your presenter since your view may have been destroyed and re-created since last stop.

You should use the viewCreated parameter of the onStart method to know if the view has been created or re-created (e.g. following a screen rotation). This boolean will be true only if the view has just been created so if it's true you should update your view according to the presenter's state.

You should not stop your background operations on the onStop method (things like HTTP calls or database connection) since your view may still be available (on the next onStart call).

You must stop all background operation on the onPresenterDestroyed method. When this method is reached, it means that your view is completely destroyed and will not be re-created later.

You should also be very careful about:

Since the presenter is loaded asynchronously by a Loader, it means that it's not available before the view actually started. So the mPresenter variable can (and will probably) be null when your activity or fragment starts (you should not call your presenter directly into onCreate, onStart or onResume methods).

To avoid leaks, your presenter will not keep a reference on your view when this view is stopped. It means that your view is guaranteed to be available from the onStart method to the onStop. It also means it will be null outside of this scope.

To ensure those last 2 points, mView and mPresenter are annotated with @Nullable, to enforce the check by the linter. It's a good idea to surround all calls with !=null.

Contributors

Martyn Haigh: MacOS installation script

Boris Strandjev: Minor tweaks and enhancements

License

Copyright 2017 Benoit LETONDOR

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

Android Studio一个开发 Android 应用程序的集成开发环境(IDE),而 MVP(Model-View-Presenter)是一种软件架构模式,用于分离应用的业务逻辑、用户界面和数据。 在 Android Studio 中使用 MVP 架构可以帮助开发者更好地组织和管理代码,提高应用的可维护性和可测试性。下面是使用 MVP 架构的一般步骤: 1. Model: 定义应用程序的数据模型,负责获取和处理数据。这可以是从网络、数据库或其他来源获取数据的地方。 2. View: 负责展示用户界面,并与用户进行交互。它不处理任何业务逻辑,只负责将用户的操作传递给 Presenter,并显示 Presenter 返回的结果。 3. Presenter: 充当 View 和 Model 之间的中间人,负责处理业务逻辑。它从 Model 获取数据,并将结果传递给 View 进行展示。同时,它也接收来自 View 的用户操作,并根据需要更新 Model。 在 Android Studio 中使用 MVP 架构,你可以创建三个不同的包来分别存放 Model、View 和 Presenter 的代码。然后,根据需要在相应的类中添加所需的方法和逻辑。 使用 MVP 架构可以将应用程序的不同部分解耦,使得每个部分都可以独立开发和测试。这有助于提高代码的可维护性和可测试性,同时也使得团队开发更加高效。 希望这个简单的介绍能够帮助你了解如何在 Android Studio 中使用 MVP 架构。如果你有更多的问题,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值