全部 文章 问答 分享 共找到187个相关内容
[问答] 算法问题:java多线程并发
求助算法题:写10条线程,并发不断从byte数组data[100000]里取出数据,每个线程每次读取12个byte,并把读取到的byte数据倒序排序(大在前,小在后)然后写入一个新数组newData要求
2020-03-18 19:46 · java / 多线程并发
[文章] nginx安装以及实现可用负载均衡
连接并发的情况下,Nginx是Apache服务器不错的替代品。
2020-09-02 18:56 · nginx / keepalived
[文章] 德地图 Android SDK 绘制点标记 绘制自定义 Marker
最近工作项目中用到了德地图需要在德地图上绘制标记点大概是这个样子按官方给出代码设置是这样的MarkerOptionsmarkerOption=newMarkerOptions();markerOption.position
2023-11-10 09:32 · 高德地图amapp
[问答] Android 版本如何获取后台进程及应用所占内存大小
Android版本如何获取后台进程及应用所占内存大小就像是手机管家清理后台软件进程现在版本还可以做到么我看很多人推荐用UsageStatsManager但是这个好像获取不到运行占用
2020-12-23 22:34 · Android
[文章] Android——RecyclerView宽自适应填充
setOrientation(GridLayoutManager.HORIZONTAL)+layout_height="match_parent"可以让RecyclerView在纵方向高度自适应;宽双方向自适应填充
2020-04-28 15:04 · Android / RecyclerView / 动态布局 / 自适应
[问答] 领券联盟,特惠界面根据ImageView大小加载图片,在获取控件宽时值为0
第一次进入特惠界面时,无法获取ImageView的宽,但往下浏览,又可以获取到ImageView的宽布局代码
2020-05-25 13:55 · 领券联盟 / Android
[问答] 控件的宽测量问题,直接使用getMeasuredWidth获取的是0,用layoutParams就是对的

补充一点,如果对一个ViewGroup类型的container获取宽,则直接getMeasuredHeight()就获取到了


2022-09-15 15:56 · 安卓 / 控件宽高测量

[文章] 版本android连数据库失败:CLEARTEXT communication ** not permitted by network
在低版本手机上测试项目可以访问数据库,但是在正在使用的版本手机上无法更新数据。
2020-12-03 12:44 · 高版本android / 网络
[问答] docker占用内存

先贴个图

场景:部署博客门户网站后,只要有 发送请求,哪怕只有一个,服务器CPU占用100% 。如上图所示,node 和 docker-proxy两个占用了全部cpu。


服务器配置:1核4G 云硬盘100G。


请问这是什么情况=.=! 拉大锯的部署教程里使用的服务器好像是2G的,都没出现过这样的情况。

2021-06-29 02:06 · docker
[文章] 《Java基础之多线程》
概念Java多线程编程是Java中并发编程的重要组成部分,允许在一个Java应用程序中同时执行多个执行线程。
2024-03-22 16:46 · java / 安卓开发 / 多线程 / 并发 / 开发
[问答] EditText 使用 Html.fromHtml显示问题
>

如果填入editText中就会发现只有一个最后的表情是显示的 去getText的时候会拿到一些代表情的符号  显示不出并发送出去也是这样的表情

2022-08-02 11:31 · 表情写法
[文章] 分布式信号量(Redis)
分布式信号量是一种在分布式环境中用于控制并发访问资源的机制,通常基于像Redis这样的分布式键值存储系统实现。在单机环境下,信号量是一个同步原语,用于限制同时访问特定资源的进程数或者线程数。
2024-01-25 12:08 · redis / 信号量 / 计数器
[文章] Kotlin进阶学习5
而使用协程却可以仅在编程语言的层面就能实现不同协程的切换,从而大大提升了并发编程的运行效率。
2020-08-12 17:24 · Kotlin / 进阶
[文章] 领券联盟-前端版本-PowerByNuxt.js-概述
优点:有利于seo优化,可以前后端分离开发缺点:需要点用较多的服务端资源,并发访问,可以做一些缓存处理,或者可以根据用户登录状态判断,没登录的服务端渲染,登录录了客户端渲染,可以减轻一下服务器的负担。
2020-04-11 15:09 · 前端 / 前后端分类 / 服务端渲染 / NuxtJS / VUEJS
[文章] 自定义View-会动的圆形
(今天在摸鱼的时候,听着网易云音乐,突然发现播放页面的碟片动画没写过,于是就试着简单写下效果)View的测量先看一幅图(从一本书上拍的)总结上图:1.当子控件宽取固定值(如??
2021-11-10 23:39 · Android
[问答] Android能否集成德静态地图?
额,官方提供的是离线地图,第一次需要联网下载离线地图,后续就不需要网络了,那如果没有网络怎么办呢(话说这年头没有谁的手机没网的),我的想法是项目内部集成地图包一起打包进apk,但是没有找到相关的内容。不知道大家有没有方法。
2020-10-14 15:13 · android / 地图
[文章] 程序员读《史记·五帝本纪》你以为尧舜禹的禅让是非亲非故?
黄帝-有熊颛顼-高阳帝喾-辛帝尧-陶唐帝禹-有虞依据:自黄帝至舜、禹,皆同姓而异其国号,以章明德。故黄帝为有熊,帝颛顼为高阳,帝喾为辛,帝尧为陶唐,帝舜为有虞。
2019-09-27 19:32 · 程序员 / 读书 / 历史 / 史记 / 三五五帝
[问答] 大佬们请教个分布式并发编程的问题

比方说现在三个方法分别是updateWalletInfo,updateOrderInfo,updateStockInfo

分别用来修改钱包,订单和库存数据。

然后有一个支付回调的paySuccess方法,需要调用这三个方法去修改信息并且处理其他信息。如果要给修改钱包,修改订单,修改库存三个方法加分布式锁,最后,给paySuccess再加一个分布式锁锁住所有这个支付订单相关的资源,这种做法是不是不正确。或者有什么其他的思路?


2023-11-16 11:17 · 后端 / 高并发
[文章] Redis笔记(持续更新)
但有可能会出现key正好过期,又同时出现大量并发访问,这些访问就回去访问数据库,这种情况就称为缓存击穿。解决办法是永久数据或加锁,防止出现数据库的并发访问。
2020-08-18 08:40 · redis / java / 笔记
[问答] 使用版本Gradle6.5时,构建报aapt2错误
Afailureoccurredwhileexecutingcom.android.build.gradle.internal.tasks.Workers$ActionFacade   >AAPT2aapt2-4.1.2-6503028-windowsDaemon#7:Daemonstartupfailed    PleasecheckifyouinstalledtheWindowsUniversalCRuntime.    Thisshouldnothappenundernormalcircumstances,pleasefileanissueifitdoes.
2021-04-17 11:06 · android / gradle / aapt2
[文章] Volley/Xutils对大图片处理算法源码分析
理论:第一次读取图片,不写入内存,直接获取到图片的宽,再通过用户设置的宽,和这個拉伸形式來计算期望的宽,结合这四個参数來找出最适合的采样率,或者直接根据屏幕大小,控件大小來计算最佳采样率。
2019-12-01 20:01 · 源码分析 / 源码 / android / xutils / volley
[文章] Nginx快速入门
其特点是占有内存少,并发能力强。
2022-07-23 15:51 · Nginx
[文章] Web开发点赞竟然有这么多值得思考的地方!
连续快速点赞并发点赞数量快速增长如果使用Mysql,查询是否已经点赞过,查询是没有问题的,不存在数据安全问题。更新呢?两个内容,插入一条点赞记录,这个不涉及到数据安全问题。
2021-03-26 11:08 · like / 点赞 / 后台 / web开发 / 数据库
[问答] 有关德地图api定位蓝点显示

最近一个项目有用到地图的需求,我是通过一个AMapWrapper的回调来获取到Amap对象,跟官方的实例中mapview.getMap()不太一样,然后在回调方法中再给这个amap设置locationstyle,也就是是否显示定位蓝点等等,定位是正确的,也都能定位成功,但是无论怎么设置,蓝点就是不显示,还有一系列的uisetting也是不显示(放大放小,回到当前位置那些按钮),有知道的好兄弟可以帮忙看看吗?下面有两个核心代码,一个是LocationFragment,一个是自定义的一个MyWebWrapper。


一,LoacationFragment

public class LocationFragment extends Fragment implements LocationSource.OnLocationChangedListener, AMap.OnMapClickListener, AMap.InfoWindowAdapter, View.OnTouchListener,AMapLocationListener {
    //声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;
    LocationSource.OnLocationChangedListener mListener;
   public AMapLocation location;
   public AMap map;
    private WebView webview;
    View infoWindow = null;
    private NestedScrollView scrollView;
    private LinearLayout layout;
    private LinearLayout layoutBtn;
    private MapView mapView;


    //初始化定位
//设置定位回调监听
    @Nullable
    @org.jetbrains.annotations.Nullable
    @Override
    public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_location, container, false);

        initView(rootView);
        initLocate();
        initMap();
        initEvent();
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        setUpMap(savedInstanceState);

        return rootView;

    }

    private void initEvent() {
        webview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                scrollView.fullScroll(NestedScrollView.FOCUS_DOWN);
            }
        });
        layoutBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), DetailActivity.class);
                startActivity(intent);
            }
        });
    }

    private void initView(View rootView) {
        webview = rootView.findViewById(R.id.webview);
        scrollView = rootView.findViewById(R.id.pull_down_layout);
        scrollView.fullScroll(NestedScrollView.FOCUS_DOWN);
        layout = rootView.findViewById(R.id.pull_down_linearlayout);

     /*   layout.setNestedScrollingEnabled(false);
        scrollView.setNestedScrollingEnabled(false);
        scrollView.setScrollbarFadingEnabled(true);*/
        layoutBtn = rootView.findViewById(R.id.pull_down_layout_plant);
    }

    private MarkerOptions MarkerOptionsManager(LatLng latLng, String name) {
        MarkerOptions markerOption = new MarkerOptions();
        markerOption.position(latLng);
 //       markerOption.title(name).snippet("植物");
        markerOption.draggable(true);//设置Marker可拖动

        markerOption.icon(BitmapDescriptorFactory.fromView(getActivity().getLayoutInflater().inflate(R.layout.marker_icon,null)));
        // 将Marker设置为贴地显示,可以双指下拉地图查看效果
        //  markerOption.setFlat(true);//设置marker平贴地图效果
        markerOption.setGps(true);
        return markerOption;
    }
    private MarkerOptions MarkerOptionsManager2(LatLng latLng,String name) {
        MarkerOptions markerOption = new MarkerOptions();
        markerOption.position(latLng);
        //       markerOption.title(name).snippet("植物");
        markerOption.draggable(true);//设置Marker可拖动
          markerOption.icon(BitmapDescriptorFactory.fromView(getActivity().getLayoutInflater().inflate(R.layout.marker_icon,null)));

        // 将Marker设置为贴地显示,可以双指下拉地图查看效果
        //  markerOption.setFlat(true);//设置marker平贴地图效果
        markerOption.setGps(true);

        return markerOption;
    }
    private void initMarker(AMap aMap) {
        LatLng latLng = new LatLng(21.150661067659183,110.3071524442981);
        LatLng latLng1 = new LatLng(21.157661067459986,110.30111524442982);
        LatLng latLng2 = new LatLng(21.158661067259482,110.30611524442983);
        LatLng latLng3 = new LatLng(21.151661067151281,110.30511524442984);
        LatLng latLng4 = new LatLng(21.159661067959285,110.30211524442985);
        MarkerOptions markerOptions = MarkerOptionsManager(latLng, "枫香树");
        MarkerOptions markerOptions1 = MarkerOptionsManager2(latLng1, "食人花");
        MarkerOptions markerOptions2 = MarkerOptionsManager(latLng2, "豌豆射手");
        MarkerOptions markerOptions3 = MarkerOptionsManager(latLng3, "樱桃炸弹");
        MarkerOptions markerOptions4 = MarkerOptionsManager(latLng4, "窝瓜");

        ArrayList<MarkerOptions> list = new ArrayList<>();
        list.add(markerOptions);

        list.add(markerOptions1);
        list.add(markerOptions2);
        list.add(markerOptions3);
        list.add(markerOptions4);
        Marker marker1 = aMap.addMarker(markerOptions1);
        marker1.setAnchor(44f,54f);
        marker1.showInfoWindow();
        Marker marker = aMap.addMarker(markerOptions4);
        marker.showInfoWindow();
        aMap.setInfoWindowAdapter(this);



        aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
              //  marker.showInfoWindow();
                scrollView.fullScroll(NestedScrollView.FOCUS_UP);
                return true;
            }
        });
          aMap.addMarkers(list,true);
    }

    private void initMap() {

        MyLocationStyle locationStyle;
        locationStyle = new MyLocationStyle();//初始化定位蓝点样式
        // locationStyle.interval(2000);//设置连续定位模式下的的定位间隔,值在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒
        locationStyle.showMyLocation(true);
        locationStyle.strokeColor(Color.BLUE);
        locationStyle.radiusFillColor(Color.RED);
        locationStyle.strokeWidth(20);
        locationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.gps_point));
        locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW);
        locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
        locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);
       MAWebViewWrapper webViewWrapper = new MAWebViewWrapper(webview);


        AMapWrapper aMapWrapper = new AMapWrapper(getContext(),webViewWrapper);
      aMapWrapper.onCreate();
        aMapWrapper.getMapAsyn(new AMap.OnMapReadyListener() {
            @Override
            public void onMapReady(AMap aMap) {
                map=aMap;
                initMarker(aMap);
                aMap.setMyLocationEnabled(true);//设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false
                aMap.setMyLocationStyle(locationStyle); //设置定位蓝点的style
                aMap.getUiSettings().setAllGesturesEnabled(true); // 设置默认定位按钮是否显示,非必须设置

                locationStyle.anchor(0.0f,1.0f);
                locationStyle.showMyLocation(true);
                aMap.setMyLocationStyle(locationStyle);


            }
        });

    }

    private void getLocation(AMapLocation location) {
      this.location=location;
    }
    private void setUpMap(Bundle savedInstanceState) {


    }

    //声明定位回调监听器
     AMapLocationListener mLocationListener =new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation location) {
                     getLocation(location);
            map.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
            map.moveCamera(CameraUpdateFactory.zoomTo(16));



            if (null != location) {
                System.out.println("错误信息————"+  location.getErrorInfo());
                StringBuffer sb = new StringBuffer();
                //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明
                if(location.getErrorCode() == 0){
                    sb.append("定位成功" + "\n");
                    sb.append("定位类型: " + location.getLocationType() + "\n");
                    sb.append("经    度    : " + location.getLongitude() + "\n");
                    sb.append("纬    度    : " + location.getLatitude() + "\n");
                    sb.append("精    度    : " + location.getAccuracy() + "米" + "\n");
                    sb.append("提供者    : " + location.getProvider() + "\n");

                    sb.append("速    度    : " + location.getSpeed() + "米/秒" + "\n");
                    sb.append("角    度    : " + location.getBearing() + "\n");
                    // 获取当前提供定位服务的卫星个数
                    sb.append("星    数    : " + location.getSatellites() + "\n");
                    sb.append("国    家    : " + location.getCountry() + "\n");
                    sb.append("省            : " + location.getProvince() + "\n");
                    sb.append("市            : " + location.getCity() + "\n");
                    sb.append("城市编码 : " + location.getCityCode() + "\n");
                    sb.append("区            : " + location.getDistrict() + "\n");
                    sb.append("区域 码   : " + location.getAdCode() + "\n");
                    sb.append("地    址    : " + location.getAddress() + "\n");
                    sb.append("兴趣点    : " + location.getPoiName() + "\n");
                    //定位完成的时间
                   // sb.append("定位时间: " + Utils.formatUTC(location.getTime(), "yyyy-MM-dd HH:mm:ss") + "\n");
                } else {
                    //定位失败
                    sb.append("定位失败" + "\n");
                    sb.append("错误码:" + location.getErrorCode() + "\n");
                    sb.append("错误信息:" + location.getErrorInfo() + "\n");
                    sb.append("错误描述:" + location.getLocationDetail() + "\n");
                }
                sb.append("***定位质量报告***").append("\n");
                sb.append("* WIFI开关:").append(location.getLocationQualityReport().isWifiAble() ? "开启":"关闭").append("\n");
                sb.append("* GPS状态:").append(getGPSStatusString(location.getLocationQualityReport().getGPSStatus())).append("\n");
                sb.append("* GPS星数:").append(location.getLocationQualityReport().getGPSSatellites()).append("\n");
                sb.append("* 网络类型:" + location.getLocationQualityReport().getNetworkType()).append("\n");
                sb.append("* 网络耗时:" + location.getLocationQualityReport().getNetUseTime()).append("\n");
                sb.append("****************").append("\n");
                //定位之后的回调时间
         //       sb.append("回调时间: " + Utils.formatUTC(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss") + "\n");

                //解析定位结果,
                String result = sb.toString();
                System.out.println(result);
                // tvResult.setText(result);
            } else {
                System.out.println("定位失败");
             //   tvResult.setText("定位失败,loc is null");
            }
        }

    };



    private String getGPSStatusString(int statusCode){
        String str = "";
        switch (statusCode){
            case AMapLocationQualityReport.GPS_STATUS_OK:
                str = "GPS状态正常";
                break;
            case AMapLocationQualityReport.GPS_STATUS_NOGPSPROVIDER:
                str = "手机中没有GPS Provider,无法进行GPS定位";
                break;
            case AMapLocationQualityReport.GPS_STATUS_OFF:
                str = "GPS关闭,建议开启GPS,提高定位质量";
                break;
            case AMapLocationQualityReport.GPS_STATUS_MODE_SAVING:
                str = "选择的定位模式中不包含GPS定位,建议选择包含GPS定位的模式,提高定位质量";
                break;
            case AMapLocationQualityReport.GPS_STATUS_NOGPSPERMISSION:
                str = "没有GPS定位权限,建议开启gps定位权限";
                break;
        }
        return str;
    }
    private void initLocate() {
                       //初始化AMapLocationClientOption对象
                        //mLocationOption = new AMapLocationClientOption();
        mLocationOption  = getDefaultOption();
        mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
                         if(null != mLocationClient){
                             mLocationClient.setLocationOption(mLocationOption);
                         }//设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 locationClient.stopLocation(); locationClient.startLocation();
        try {
            AMapLocationClient.updatePrivacyShow(getContext(),true,true);
            AMapLocationClient.updatePrivacyAgree(getContext(),true);
            mLocationClient = new AMapLocationClient(getContext());

        } catch (Exception e) {
            e.printStackTrace();
        }
        mLocationClient.setLocationOption(mLocationOption);
        mLocationClient.setLocationListener(mLocationListener);
       mLocationClient.startLocation();
    }
    private AMapLocationClientOption getDefaultOption(){
        AMapLocationClientOption mOption = new AMapLocationClientOption();
        mOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//可选,设置定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式
        mOption.setGpsFirst(false);//可选,设置是否gps优先,只在高精度模式下有效。默认关闭
        mOption.setHttpTimeOut(30000);//可选,设置网络请求超时时间。默认为30秒。在仅设备模式下无效
        mOption.setInterval(2000);//可选,设置定位间隔。默认为2秒
        mOption.setNeedAddress(true);//可选,设置是否返回逆地理地址信息。默认是true
        mOption.setOnceLocation(false);//可选,设置是否单次定位。默认是false
        mOption.setOnceLocationLatest(false);//可选,设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用
        AMapLocationClientOption.setLocationProtocol(AMapLocationClientOption.AMapLocationProtocol.HTTP);//可选, 设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTP
        mOption.setSensorEnable(false);//可选,设置是否使用传感器。默认是false
        mOption.setWifiScan(true); //可选,设置是否开启wifi扫描。默认为true,如果设置为false会同时停止主动刷新,停止以后完全依赖于系统刷新,定位位置可能存在误差
        mOption.setLocationCacheEnable(true); //可选,设置是否使用缓存定位,默认为true
        mOption.setGeoLanguage(AMapLocationClientOption.GeoLanguage.DEFAULT);//可选,设置逆地理信息的语言,默认值为默认语言(根据所在地区选择语言)
        return mOption;
    }
    @Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (aMapLocation!=null&&mListener!=null){
       mListener.onLocationChanged(aMapLocation);
       mLocationListener.onLocationChanged(aMapLocation);
            System.out.println("显示系统小兰点——————————————————");
        }else {
            System.out.println("定位失败");
        }
    }




    @Override
    public void onMapClick(LatLng latLng) {

    }

    @Override
    public void onLocationChanged(Location location) {
        if (mLocationListener!=null&&mListener!=null){
            mListener.onLocationChanged(location);

            System.out.println("显示系统小兰点——————————————————");
        }else {
            System.out.println("定位失败");
        }
    }

    @Override
    public View getInfoWindow(Marker marker) {
        if(infoWindow == null) {
            infoWindow = LayoutInflater.from(getContext()).inflate(
                    R.layout.info_window_layout, null);
        }
     //   render(marker, infoWindow);
        return infoWindow;
    }

    @Override
    public View getInfoContents(Marker marker) {
        return null;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        scrollView.fullScroll(NestedScrollView.FOCUS_DOWN);
        return true;
    }

}



二、MAWebViewWrapper
public class MAWebViewWrapper implements IAMapWebView {

    private final WebView webView;
    private WebViewClient mapWebViewClient;

    public MAWebViewWrapper(final WebView webView) {
        this.webView = webView;
        if (this.webView != null) {
            this.webView.setWebViewClient(
                    new WebViewClient() {
                        @TargetApi(Build.VERSION_CODES.N)
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                            if (mapWebViewClient != null) {
                                boolean flag = mapWebViewClient.shouldOverrideUrlLoading(view, request);
                                if (flag) {
                                    return true;
                                }

                            }
                            return super.shouldOverrideUrlLoading(view, request);
                        }

                        @TargetApi(Build.VERSION_CODES.LOLLIPOP)
                        @Override
                        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
                            if (mapWebViewClient != null) {
                                WebResourceResponse flag = mapWebViewClient.shouldInterceptRequest(view, request);
                                if (flag != null) {
                                    return flag;
                                }

                            }
                            return super.shouldInterceptRequest(view, request);
                        }

                        @Override
                        public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
                            if (mapWebViewClient != null) {
                                WebResourceResponse flag = mapWebViewClient.shouldInterceptRequest(view, url);
                                if (flag != null) {
                                    return flag;
                                }

                            }
                            return super.shouldInterceptRequest(view, url);
                        }
                    }
            );
        }
    }

    @Override
    public void evaluateJavascript(String jsCallSig, ValueCallback<String> callback) {
        if (this.webView != null) {
            this.webView.evaluateJavascript(jsCallSig, callback);
        }
    }

    @Override
    public void loadUrl(String toString) {
        if (this.webView != null) {
            this.webView.loadUrl(toString);
        }
    }



    @SuppressLint("JavascriptInterface")
    @Override
    public void addAMapJavascriptInterface(IAMapJsCallback object, String javascriptInterfaceName) {
        if (this.webView != null) {
            this.webView.addJavascriptInterface(object, javascriptInterfaceName);
        }
    }

    @Override
    public void setWebViewClient(WebViewClient webViewClient) {
        this.mapWebViewClient = webViewClient;
    }

    @Override
    public int getWidth() {
        if (this.webView != null) {
            return this.webView.getWidth();
        }
        return 0;
    }

    @Override
    public int getHeight() {
        if (this.webView != null) {
            this.webView.getHeight();
        }
        return 0;
    }


    @Override
    public void addView(View v, ViewGroup.LayoutParams params) {
        if (webView != null && v != null) {
            webView.addView(v, params);
        }
    }
}


2022-11-29 12:00 · 高德地图安卓
[文章] 学习笔记·RabbitMQ
消息中间件应用场景跨系统数据传递并发的流量削峰数据的分发和异步处理大数据分析与传递分布式事务应用解耦常见消息中间件:ActiveMQ、RabbitMQ、Kafka、RocketMQ...消息中间件本质
2022-07-23 16:00 · RabbitMQ / 消息中间件 / 中间件 / 分布式
[文章] 你真的懂IPC吗?
Android系统会给每一个进程分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致了很多问题:-静态成员和单例模式失效-线程同步机制失效-SP并发操作导致数据可靠性下降-Application
2020-01-27 10:30 · IPC / Android / 进程间通讯 / Linux
[文章] 初涉安卓开发:Java基础知识详解与学习路径
6.多线程与并发-Thread类与Runnable接口:掌握创建和管理线程的基本方法,理解线程同步机制,如synchronized关键字和Lock接口。
2024-03-20 11:05 · 安卓开发 / java / 基础 / 基础知识 / 安卓
[文章] UI 绘制流程(测量、布局、绘制)
gt;wrap_contentmode+size->MeasureSpecMeasureSpec=mode+sizeViewGroup:measure->onMeasure(测量子控件的宽
2022-02-10 15:59 · Android / 安卓
[分享] 推荐程序员拉大锯的B站主页
你想事情吗..不,你不想! 拿起你的键盘吧!拿起你的鼠标吧!点亮你的屏幕,开始改变世界 吧!
2019-08-31 08:45 · 程序员日常 / 推荐 / 安卓 / 编程 / 开发
[文章] 安卓字体描边效果
heightMeasureSpec:Int){//测量字体所在矩形(mRect)的大小mPaint.getTextBounds(mTextStr,0,mTextStr.length,mRect)//设置自定义View的宽
2022-09-11 19:08 · Android / 字体描边 / 自定义View
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7