java - 从 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
但仍然无法从服务器端接收信息。
非常感谢
解决方案
解决了:
在执行中添加延迟service.send()
所以解决方案:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mservice.send(msg)
}
}, 1000);
推荐阅读
- android - 即使在 layout_height 上使用 WRAP_CONTENT,RecycleView 也会显示间隙之间的额外空间
- javascript - onchange 方法未触发
- amazon-web-services - 忽略指定内容类型的 Amazon S3 直接上传
- ios - 在 iOS 上过滤裸露/露骨用户生成内容的标准方法
- validation - 无法在原始类型 int 上调用 length()
- asp.net - 当 ASP.Net Core 返回 413(请求正文太大)时,如何阻止 IIS 返回 502.3 - Bad Gateway?
- python - python:对非零填充的对象使用 strptime()
- android - 无法在 Android Studio 中使用包创建
- javascript - 角度 4 嵌套的 formArray / formGroup 将值从 DB 查询返回到表单中
- python - 是否有一种更简洁的 Pythonic 方式来忽略对未初始化属性的调用?