阿里 ARouter demo 学习 (一)

 1.https://github.com/alibaba/ARouter    

ARouter 是为了项目组件化,根据项目需求 切分不同业务模块 ,为了不同业务模块之间解耦 ,而又不影响 ,相互的交互而产生 的,项目开发中,模块开发者,可以只编译测试自己的业务模块,更节省时间 ,提升效率。

2.MainActivity 这种界面 跳转代码事例 

package com.alibaba.android.arouter.demo;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.alibaba.android.arouter.demo.testinject.TestObj;
import com.alibaba.android.arouter.demo.testinject.TestParcelable;
import com.alibaba.android.arouter.demo.testservice.HelloService;
import com.alibaba.android.arouter.demo.testservice.SingleService;
import com.alibaba.android.arouter.facade.Postcard;
import com.alibaba.android.arouter.facade.callback.NavCallback;
import com.alibaba.android.arouter.launcher.ARouter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private static Activity activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        activity = this;
    }

    public static Activity getThis() {
        return activity;
    }

    /**
     * Called when a view has been clicked.
     *
     * @param v The view that was clicked.
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.openLog:
                ARouter.openLog();
                break;
            case R.id.openDebug:
                ARouter.openDebug();
                break;
            case R.id.init:
                // 调试模式不是必须开启,但是为了防止有用户开启了InstantRun,但是
                // 忘了开调试模式,导致无法使用Demo,如果使用了InstantRun,必须在
                // 初始化之前开启调试模式,但是上线前需要关闭,InstantRun仅用于开
                // 发阶段,线上开启调试模式有安全风险,可以使用BuildConfig.DEBUG
                // 来区分环境
                ARouter.openDebug();
                ARouter.init(getApplication());
                break;
            case R.id.normalNavigation:
                // 正常应用跳转 代码
                ARouter.getInstance()
                        .build("/test/activity2")
                        .navigation();
                break;
            case R.id.kotlinNavigation:

//                kotlin跳转
                ARouter.getInstance()
                        .build("/kotlin/test")
                        .withString("name", "老王")
                        .withInt("age", 23)
                        .navigation();
                break;

            case R.id.normalNavigation2:
                // 跳转 forResult 带返回参数的跳转
                ARouter.getInstance()
                        .build("/test/activity2")
                        .navigation(this, 666);
                break;

            case R.id.getFragment:
                //获取fragment 实例
                Fragment fragment = (Fragment) ARouter.getInstance().build("/test/fragment").navigation();
                Toast.makeText(this, "找到Fragment:" + fragment.toString(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.normalNavigationWithParams:
                // ARouter.getInstance()
                //         .build("/test/activity2")
                //         .withString("key1", "value1")
                //         .navigation();
                //带参数跳转
                Uri testUriMix = Uri.parse("arouter://m.aliyun.com/test/activity2");
                ARouter.getInstance().build(testUriMix)
                        .withString("key1", "value1")
                        .navigation();

                break;
            case R.id.oldVersionAnim:
                //老版本转场动画跳转
                ARouter.getInstance()
                        .build("/test/activity2")
                        .withTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom)
                        .navigation(this);
                break;
            case R.id.newVersionAnim:

                //先版本转场动画跳转

                if (Build.VERSION.SDK_INT >= 16) {
                    ActivityOptionsCompat compat = ActivityOptionsCompat.
                            makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);

                    ARouter.getInstance()
                            .build("/test/activity2")
                            .withOptionsCompat(compat)
                            .navigation();
                } else {
                    Toast.makeText(this, "API < 16,不支持新版本动画", Toast.LENGTH_SHORT).show();
                }



                break;
            case R.id.interceptor:
                //拦截器测试
                ARouter.getInstance()
                        .build("/test/activity4")
                        .navigation(this, new NavCallback() {
                            @Override
                            public void onArrival(Postcard postcard) {

                            }

                            @Override
                            public void onInterrupt(Postcard postcard) {
                                Log.d("ARouter", "被拦截了");
                            }
                        });
                break;
            case R.id.navByUrl:
                //通过url 跳转
                ARouter.getInstance()
                        .build("/test/webview")
                        .withString("url", "file:///android_asset/schame-test.html")
                        .navigation();
                break;
            case R.id.autoInject:
                // 依赖注入
                TestParcelable testParcelable = new TestParcelable("jack", 666);
                TestObj testObj = new TestObj("Rose", 777);
                List<TestObj> objList = new ArrayList<>();
                objList.add(testObj);

                Map<String, List<TestObj>> map = new HashMap<>();
                map.put("testMap", objList);

                ARouter.getInstance().build("/test/activity1")
                        .withString("name", "老王")
                        .withInt("age", 18)
                        .withBoolean("boy", true)
                        .withLong("high", 180)
                        .withString("url", "https://a.b.c")
                        .withParcelable("pac", testParcelable)
                        .withObject("obj", testObj)
                        .withObject("objList", objList)
                        .withObject("map", map)
                        .navigation();
                break;

            case R.id.navByName:
                //根据名称 调
                ((HelloService) ARouter.getInstance().build("/service/hello").navigation()).sayHello("mike");
                break;
            case R.id.navByType:
                //根据类型 调用
                ARouter.getInstance().navigation(HelloService.class).sayHello("mike");
                break;
            case R.id.navToMoudle1:
                //跳转到 moudle1 在module-java  库中
                ARouter.getInstance().build("/module/1").navigation();
                break;

            case R.id.navToMoudle2:
                // 这个页面主动指定了Group名 跳转到 moudle2
                ARouter.getInstance().build("/module/2", "m2").navigation();
                break;

            case R.id.callSingle:
                 //  调用 单类
                ARouter.getInstance().navigation(SingleService.class).sayHello("Mike");
                break;

            case R.id.destroy:
                ARouter.getInstance().destroy();


                break;
            case R.id.failNav:

                ARouter.getInstance().build("/xxx/xxx").navigation(this, new NavCallback() {
                    @Override
                    public void onFound(Postcard postcard) {
                        Log.d("ARouter", "找到了");
                    }

                    @Override
                    public void onLost(Postcard postcard) {
                        Log.d("ARouter", "找不到了");
                    }

                    @Override
                    public void onArrival(Postcard postcard) {
                        Log.d("ARouter", "跳转完了");
                    }

                    @Override
                    public void onInterrupt(Postcard postcard) {
                        Log.d("ARouter", "被拦截了");
                    }
                });
                break;


            case R.id.failNav2:

                ARouter.getInstance().build("/xxx/xxx").navigation();
                break;

            case R.id.failNav3:
                ARouter.getInstance().navigation(MainActivity.class);
                break;


            default:
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case 666:
                Log.e("activityResult", String.valueOf(resultCode));
                break;
            default:
                break;
        }
    }
}

3.项目中还没用 ,看了一下别人 踩过的坑 。

https://blog.csdn.net/u013762572/article/details/77150769

### 回答1: 好的。深度学习是机器学习的一种方法,其中机器使用多层神经网络来学习和处理数据。一个深度学习的例子可能是使用一个图像分类器来识别图像中的物体。图像分类器是一个深度学习模型,其中输入是图像,输出是图像中物体的类别。为了训练这个模型,我们需要大量的图像数据和对应的标签(例如“狗”、“猫”等)。然后我们使用这些数据来训练模型,使得它能够识别新图像中的物体。 ### 回答2: 深度学习模型是一种人工智能算法,它模仿人脑神经网络的工作原理,通过大量的数据训练模型,从而实现自主学习和精准预测。一个深度学习demo可以是一个针对图像识别的应用。 在这个demo中,我们可以使用一些开源的深度学习框架,如TensorFlow或PyTorch来构建模型。首先,我们需要准备一些图像数据集,例如手写数字、动物图像或车辆图像等。然后,我们可以使用一个具有多层神经网络架构的卷积神经网络(Convolutional Neural Network, CNN)来训练模型。 训练过程中,我们将使用一部分图像数据进行模型训练,另一部分用于验证和测试模型的准确性。通过不断迭代训练,模型能够从数据中学习到识别特定类别的图像。训练的结果会被保存下来,用于之后的预测。 在训练好的模型上,我们可以输入一张未知的图像进行预测。模型将通过学习到的特征和模式,自动判断图像属于哪个类别。例如,如果输入手写数字图像,模型可以预测出数字0到9中的一个。 深度学习demo的最终结果就是一个能够准确识别出图像的模型。通过该demo,我们可以展示深度学习在图像识别领域的应用潜力,向用户展示人工智能的强大功能。 总之,深度学习demo是一个用于展示深度学习算法在图像识别方面应用的示例。通过训练模型,我们可以实现准确和可靠的图像预测,并向用户展示人工智能的强大能力。 ### 回答3: 深度学习是一种机器学习的方法,通过模拟人脑神经网络的工作原理进行模型训练和数据处理。一个深度学习demo可以用来展示深度学习在实际应用中的能力和效果。 这个深度学习demo可以是一个图像识别的应用。首先,我们需要收集一批有标签的图像数据,例如猫和狗的图片,然后将这些图片用来训练深度神经网络模型。训练过程中,模型会通过不断学习和调整权重来提高对不同类别图像的判断能力。 一旦模型训练完成,我们可以用这个demo来测试模型的准确性。用户可以选择一张任意的猫或狗的图片,通过上传或者拍摄的方式输入到demo中。模型会将该图片输入到神经网络中进行处理和分析,最终输出一个判断结果,即该图片是猫还是狗。 通过这个demo,我们可以直观地感受和体验深度学习在图像识别方面的能力。深度学习模型可以通过反复的训练和学习,从大量图像数据中学习到不同物体的特征和模式,并根据这些特征进行分类判断。在许多实际应用中,深度学习已经展现出了出色的表现,比如人脸识别、图像自动标注等领域。 总之,一个深度学习demo可以通过展示图像分类的应用来演示深度学习在实际中的应用价值,同时也能让人们更好地了解深度学习的原理和工作方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值