Android 开发过程中遇到的一系列问题(持续更新)

目录

os.Handler 篇

工程中使用的大多是 android.os 包里面的Handler

蓝牙问题

蓝牙扫描设备问题

弹窗问题

1、popupWindow 或者Diolog 弹窗报错

2、弹窗在Activity#onCreate中调用不显示



os.Handler 篇

  1. 工程中使用的大多是 android.os 包里面的Handler

Handler 发送不成功,或者 Handler 内部handlerMessage 方法未响应:
一、检查发送的方法是否使用的 send 开头的方法,请勿直接调用handlerMessage(),
二、Handler Looper被关闭,检查代码,或者直接在创建Handler的时候传入一个线程Looper

if (mhandler == null) {
                    //handler不执行 主动添加Looper
                    HandlerThread handlerThread = new HandlerThread("handler_thread");
                    handlerThread.start();
                    mhandler = new Mhandler(activity, handlerThread.getLooper());
                }
//_______________________________________________
private static class Mhandler extends Handler {
       
        SoftReference<Activity> softReference;

        public Mhandler(BluttoothUtilBaseActivity softReference, Looper looper) {
            super(looper);
            this.softReference = new SoftReference< Activity >(softReference);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            

        }
    }

蓝牙问题

  1. 蓝牙扫描设备问题

  2. 根据华为提供的《Google Q 版本应用兼容性整改指导》中说明

  3. 2.6.5  WiFi/蓝牙扫描需要打开位置开关 电话,Wi-Fi,蓝牙 API 所需的精确位置权限

    2.6.6  电话,Wi-Fi,蓝牙 API 所需的精确位置权限

    1、应用的targetSdkVersion>=Q:除非应用具有ACCESS_FINE_LOCATION权限,否则在 Android Q上运行时,应用无法在Wi-Fi,Wi-Fi Aware或蓝牙API中使用多种方法

    2、应用的targetSdkVersion<Q:不受影响,只需要申请ACCESS_COARSE_LOCATION或 者ACCESS_FINE_LOCATION即可

    3、具体影响的接口有:

    模块

    接口

    Telephony

    TelephonyManager

    getAvailableNetworks() getServiceStateForSubscriber getServiceState()

    TelephonyScanManager

    requestNetworkScan()

    PhoneStateListener

    onCellLocationChanged() onCellInfoChanged() onServiceStateChanged()

    NetworkScanCallback

    onResults()

    Wi-FiWifiScanner

    startScan()

    WifiManager

    startScan() getScanResults()

    WifiAwareManager 
    WifiP2pManager 

    WifiRTTManager

     

    Bluetooth

    BluetoothAdapter

    startDiscovery()
    startLeScan()
    LeScanCallback()

     

  4.    蓝牙重点看表格的最后一行,蓝牙适配器 的接口中,就有扫描接口

  5. 还有一个问题可能存在的原因:蓝牙适配器需要重新去获取对象

弹窗问题

1、popupWindow 或者Diolog 弹窗报错

四个常见报错

参考资料https://www.jianshu.com/p/4c5fafe08fa7

1.Unable to add window --token null is not valid; is your activity running

2.Unable to add window --token null is not for an application 

3.Unable to add window -- token android.os.BinderProxy@XXX is not valid;
is your activity running

4.Unable to add window -- token android.app.LocalActivityManager
$LocalActivityRecord @xxx is not valid; is your activity running

以上四个问题都属于弹窗引起的,popupWindow 或者Diolog

具体解决 方案请查看作者原作https://www.jianshu.com/p/4c5fafe08fa7

2、弹窗在Activity#onCreate中调用不显示

原因:在Activity界面未显示之前,就进行弹窗,是显示不出来的,非要onCreate 中调用的话需要用以下代码,让弹窗在activity界面初始化之后再弹出

 this.getWindow().getDecorView().post(new Runnable() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        initData();
                    }
                });
            }
        });

文章会持续更新,若有问题或者更多解决方案,欢迎分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值