首页 > 解决方案 > 从 android 库调用信使绑定服务

问题描述

我正在尝试制作一个自定义的 android 库。

将我的 LIb 称为:

            mylib = new Mylib();
            JSONObject dict = new JSONObject();
            dict.put("Daata",1);
            mylib.initialize(dict);

Mylib 代码:

public class Mylib  {

    public Mylib() {
    }

    public void initialize(JSONObject message) throws ParseException {
        System.out.println(message);
        System.out.println("done");
    }

}

问题 :

我想启动一个非活动类,它可以启动信使客户端与另一个应用程序交互。所以我尝试了这个:

Intent intent = new Intent( Mylib.this , MySecondLib.class );

我懂了:

Cannot resolve constructor error

因此,我尝试将 Mylib 类扩展为extends AppCompatActivity. 和写作

        Intent intent = new Intent( Mylib.this , MySecondLib.class );
        startActivity(intent);

并得到这个错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

我通过时看到类似的错误: Intent intent = new Intent( getApplicationContext() , MySecondLib.class );

现在我在 Mylib 类的构造函数中将应用程序上下文作为参数传递并运行:Intent intent = new Intent( context , MySecondLib.class ); 但我仍然得到错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

所以,我做到了context.startActivity(intent); ,它适用于活动课程。

但是如果 Mysecondlib 也是一个非活动类并且我想在 Mysecondlib 中启动一个信使客户端怎么办。

所以,我尝试了 .. 信使服务的官方示例客户端代码

必须进行一些更改: Replaced the bindservice with context.bindservice

但仍然无法从服务器端接收信息。

非常感谢

标签: javaandroid

解决方案


解决了:

在执行中添加延迟service.send()

所以解决方案:

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            public void run() {
                mservice.send(msg)
            }
        }, 1000);


推荐阅读