账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何在hybrid app中实现,双向的callback调用?有什么成熟的解决方案吗?
    70
    0

    JS的代码,很多都是以Callback的形式往下链式执行的。
    但是在JS方法链中,如果调用了iOS和Android的方法,就只能断开这个链。等待ios和Android执行完操作,再调用JS的某个方法,继续剩下的操作。

    这样做会导致程序链断裂,影响程序设计。

    请问,有没有成熟的解决方案,可以让iOS和Android的方法调用,就像一般JS的方法那样,按顺序执行下去?
    我大概有一些想法,但是感觉应该是有现成方案可以用的。

    多谢帮助

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我叫二萌子 普通会员 1楼

      在Hybrid App中实现双向的callback调用,可以使用JavaScript和Android的Callback机制。以下是一个简单的实现:

      1. 创建回调函数:在JavaScript中,你可以创建一个回调函数,这个函数将在回调函数被调用时被调用。回调函数的参数是参数的数组,而不是原始参数。

      javascript function myCallback(arr) { console.log(arr); }

      1. 在Android中,你可以使用BroadcastReceiver和BroadcastReceiverCallback来实现。

      首先,你需要在AndroidManifest.xml文件中注册一个BroadcastReceiver:

      xml <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>

      然后,你需要在你的Activity中创建一个BroadcastReceiverCallback:

      java public class MyBroadcastReceiverCallback extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 这里是你的回调代码 String action = intent.getAction(); if (action.equals("android.intent.action.BOOT_COMPLETED")) { // 这里是你的回调代码 // 比如,你可以关闭所有的Activity finish(); } } }

      1. 在你的Hybrid App中,你可以将你的Callback放在一个BroadcastReceiver中,然后在你的Activity中注册这个BroadcastReceiver。

      ```java public class HybridApp { private MyBroadcastReceiver receiver;

      public HybridApp() { receiver = new MyBroadcastReceiverCallback(); registerReceiver(receiver, new IntentFilter("android.intent.action.BOOT_COMPLETED")); }

      public void startService() { Intent serviceIntent = new Intent(this, YourService.class); startService(serviceIntent); }

      public void stopService() { stopService(new Intent(this, YourService.class)); }

      public void stopBroadcastReceiver() { stopBroadcastReceiver(receiver); } } ```

      以上就是在Hybrid App中实现双向的callback调用的方法。你可以根据你的需求进行修改。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部