有没有HarmonyOS鸿蒙Next工程师解答为什么对方微信给我打电话,打不进来?

有没有HarmonyOS鸿蒙Next工程师解答为什么对方微信给我打电话,打不进来? 为什么对方微信打给我打电话,打不进来?

图片


更多关于有没有HarmonyOS鸿蒙Next工程师解答为什么对方微信给我打电话,打不进来?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

这个其实需要微信解决 和他们内部的代码有关系 之前微信更新也很频繁

更多关于有没有HarmonyOS鸿蒙Next工程师解答为什么对方微信给我打电话,打不进来?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


对方版本太低导致的,跟你的手机没关系,鸿蒙微信从一开始就存在这个问题,

不是鸿蒙微信的事,对方不管是安卓还是苹果,长时间没更新就会这样。

鸿蒙微信从最起初也就是1.0版本开始就跟其他系统的微信较低版本的不兼容,麻烦看清楚我说的是什么意思,

1. 什么是线程?

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

2. 线程和进程的区别

  • 根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。
  • 开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
  • 所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)。
  • 内存分配:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
  • 包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

3. 线程的生命周期

线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、死亡。

  • 新建:就是刚使用new方法,new出来的线程;
  • 就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;
  • 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;
  • 阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调用notify或者notifyAll()方法。唤醒的线程不会立刻执行run方法,它们要再次等待CPU分配资源进入运行状态;
  • 销毁:如果线程正常执行完毕后或线程被提前强制性地终止或出现异常导致结束,那么线程就要被销毁,释放资源;

完整的生命周期图如下:

线程生命周期

4. 创建线程的四种方式

4.1 继承Thread类

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。

public class MyThread extends Thread {
    public void run() {
        System.out.println("MyThread.run()");
    }
}

MyThread myThread1 = new MyThread();
myThread1.start();

4.2 实现Runnable接口

如果自己的类已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口。

public class MyThread extends OtherClass implements Runnable {
    public void run() {
        System.out.println("MyThread.run()");
    }
}

//启动 MyThread,需要首先实例化一个 Thread,并传入自己的MyThread实例:
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
//事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run()
public void run() {
    if (target != null) {
        target.run();
    }
}

4.3 实现Callable接口通过FutureTask包装器来创建Thread线程

有的时候,我们可能需要让一步执行的线程在执行完成以后,提供一个返回值给到当前的主线程,主线程需要依赖这个值进行后续的逻辑处理,那么这个时候,就需要用到带返回值的线程了。Java中提供了这样的实现方式。

public class CallableDemo implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        int sum = 0;
        for (int i = 0; i <= 100; i++) {
            sum += i;
        }
        return sum;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        CallableDemo callableDemo = new CallableDemo();
        FutureTask<Integer> futureTask = new FutureTask<>(callableDemo);
        new Thread(futureTask).start();
        System.out.println(futureTask.get());
    }
}

4.4 使用ExecutorService、Callable、Future实现有返回结果的线程

ExecutorService、Callable、Future这三个接口实际上都是属于Executor框架。返回结果的线程是在JDK1.5中引入的新特征,有了这种特征就不需要再为了得到返回值而大费周折了。而且自己实现了也可能漏洞百出。

可返回值的任务必须实现Callable接口。类似的,无返回值的任务必须实现Runnable接口。

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

public class CallableDemo implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        int sum = 0;
        for (int i = 0; i <= 100; i++) {
            sum += i;
        }
        return sum;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executor = Executors.newCachedThreadPool();
        CallableDemo callableDemo = new CallableDemo();
        Future<Integer> future = executor.submit(callableDemo);
        System.out.println(future.get());
    }
}

双方版本不兼容, 去设置里看下版本号

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

可能会是微信版本不兼容的事,

在HarmonyOS Next中,微信通话无法接入可能是由于系统权限设置或应用后台管理限制。请检查HarmonyOS的“应用管理”中,确保微信已开启“允许后台运行”和“自启动”权限。同时,在“通知管理”中确认微信通话通知未被屏蔽。此外,检查网络连接是否稳定,并确保HarmonyOS系统及微信应用均为最新版本。

根据您提供的信息,这通常不是HarmonyOS Next系统本身的问题。微信通话属于应用层功能,其连接成功与否主要取决于网络环境和应用权限设置。

结合截图,最可能的原因及排查步骤如下:

  1. 网络问题:这是最常见的原因。请确保您的设备(和对方设备)网络连接稳定且通畅。可以尝试:

    • 切换网络(如从Wi-Fi切换到移动数据,或反之)。
    • 重启路由器或飞行模式后重新连接网络。
  2. 微信权限问题:请检查HarmonyOS中是否为微信授予了必要的权限。

    • 进入 设置 > 应用 > 应用管理 > 微信 > 权限管理
    • 确保 麦克风相机(如需视频通话)等权限已开启。同时,检查 “后台运行”“自启动” 权限是否被限制,这可能导致应用在后台无法及时响应来电。
  3. 微信应用问题

    • 确保您的微信版本是最新的。
    • 尝试清除微信缓存(设置 > 应用 > 应用管理 > 微信 > 存储 > 清空缓存)。
    • 如果问题持续,可以尝试重启微信或重启设备。
  4. 系统设置检查

    • 请确认未开启 “免打扰”模式(控制中心或设置中检查),该模式会静音所有通知和呼叫。
    • 检查 通知管理(设置 > 通知和状态栏 > 应用通知管理 > 微信),确保允许微信显示通知横幅和锁屏通知,以便您能及时看到来电界面。

由于微信通话依赖于腾讯的服务器和中继网络,偶尔的服务器波动或区域性网络拥塞也可能导致呼叫失败,这种情况通常稍后会自行恢复。

建议您按以上顺序进行排查,重点检查网络连接和应用权限设置。

回到顶部