- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个应用程序,它基本上是在调用 API 时使用 Firebase 云消息服务从我自己的服务器获取通知,奇怪的是,当我通过 Android studio RUN 菜单安装它时,它直接将应用程序安装到我的设备上 APP工作正常,但是当我从我的项目目录中取出应用程序调试并手动安装它时,它给了我错误
Can't create handler inside thread that has not called Looper.prepare()
错误指出我的方法是使用 onTokenRefresh()
方法中的 volley 库将数据发送到我的数据库。
我将这些方法放在扩展 FirebaseInstanceIdService 的服务中。
这是完整的错误信息
E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-1
Process: proizzy.com.qrcodeproizzyadm, PID: 5704
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:200)
at android.os.Handler.<init>(Handler.java:114)
at android.widget.Toast$TN.<init>(Toast.java:645)
at android.widget.Toast.<init>(Toast.java:137)
at android.widget.Toast.makeText(Toast.java:440)
at proizzy.com.qrcodeproizzyadm.Notification.FirebaseInstanceIDService.onTokenRefresh(FirebaseInstanceIDService.java:25)
at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source)
at com.google.firebase.iid.FirebaseInstanceIdService.zzm(Unknown Source)
at com.google.firebase.iid.zzb$2.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
我不知道我的代码出了什么问题。
这是我的服务类的完整代码
public class FirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
final String token = FirebaseInstanceId.getInstance().getToken();
Log.v("tok", token);
String tokUrl = "someurl.php";
JsonObjectRequest regToken = new JsonObjectRequest(Request.Method.POST, tokUrl, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v("success", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v("errorvolley", error.getMessage());
}
}){
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("token", token);
return params;
}
};
RequestQueue regQueue = Volley.newRequestQueue(getApplicationContext());
regQueue.add(regToken);
}
最佳答案
好的,所以我已经解决了问题,出于某种原因,如果您从 debug-app 手动安装应用程序,您将收到我在问题中提到的错误。我通过将从 FCM 获得的 token 保存到共享首选项来解决它,稍后当用户登录时,我将 token 发送到我的数据库。这种方式 imo 效率较低,因为用户每次登录时都必须发送 token ,但 token 保持不变(直到他们清除数据或卸载应用程序)。
关于android - FCM onTokenRefresh() 无法在未调用 Looper.prepare() 的线程内创建处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42828503/
我对 MySql 有疑问,详情如下:我创建了一个新的模式/数据库,(仅)执行了这个查询: create table mytable ( id varchar(50) not null, name va
我正面临着 continuum 的发布问题:准备阶段在 scm-check-modifications 步骤中失败并出现错误: [ERROR] org.apache.maven.shared.rele
由于我要连接到外部数据库,因此我需要一种仅在必要时(如果有查询)才连接到数据库的方法。 我在 StackOverflow 上找到了这个答案:Auto connecting to PDO only if
每次我尝试将中等大小的 JSON 对象同步到我的数据库时都会遇到这个问题,以便我们可以对其执行一些报告。通过调查可能导致它的原因,我发现了有关此事的这些链接。 http://blog.corrlabs
我有从多个表返回结果的 MySQL View , 我正在尝试从 laravel 项目的这个 View 中进行一些查询, 本地服务器没有问题 但在远程服务器上显示以下错误 "General error:
我重写了我的网站 php 代码并添加了 MySQL 存储过程。 在我的本地版本中,一切正常,但在我将网站上传到托管服务器后,我不断收到 fatal error “准备好的语句需要重新准备”。 有时页面
我重写了我的站点 php 代码并添加了 MySQL 存储过程。 在我的本地版本中,一切正常,但在我将我的网站上传到托管服务器后,我不断收到 fatal error “Prepared statemen
我重写了我的站点 php 代码并添加了 MySQL 存储过程。 在我的本地版本中,一切正常,但在我将我的网站上传到托管服务器后,我不断收到 fatal error “Prepared statemen
我在运行批处理作业时收到以下错误。 sql.SQLException: Prepared statement needs to be re-prepared 什么情况下会遇到此错误? 最佳答案 这是一
prepare for segue 和 prepare for unwind 之间有什么区别?我已经将这两个实现到 Xcode 项目中,它们都得到了相同的结果。我实现这两个功能的代码是:(with p
作为指南,用于准备测试数据库的命令是 bundle exec rake db:test:prepare 但是,我发现以下命令也有效并为我创建了测试数据库。 bundle exec rake test:
我最近启动了我的基于 Laravel 的网站,我没有遇到任何问题,但是 40 分钟前当我检查它时我得到了这个错误: SQLSTATE[HY000]: General error: 1615 Prepa
更新:查询工作正常,如下所示;当我从 View 中选择时,错误只会出现。 $query = " SELECT ModuleID, ModuleName, Credits, Lecturer, Room
我的laravel项目每天早上都会出错,一段时间后就没事了。我不明白这是什么问题。 我用谷歌搜索了一下,发现了一些类似的问题。但这并不能解决我的问题。 db version is 5.1.1 最佳答案
所以根据this link一个是快捷方式包装器(所以我猜它们是一样的)。 当我运行 bundle exec rake db:test:prepare 时,我得到了这个错误: Don't know ho
我有两个 View ,第一个是一个简单的 View ,其中包含一些有关用法的介绍,通过单击按钮可以打开主视图。主视图有很多图像和两个自定义的表格,行由文本和图像组成,因此主视图的创建相当慢。分析器显示
大约 10 天前,我向我的 iTunes Connect 帐户添加了两个应用程序。一个是“轻型”版本,另一个是收费的。完整版本已经在应用商店上架,但免费版本的状态只是“准备上传”。十天后!一定有什么问
我在运行 mvn release:prepare 时遇到问题。我有以下消息: [ERROR] Failed to execute goal org.apache.maven.plugins: mave
我正在 MainActivity 处理程序的帮助下更新进度条但它给出了错误:无法在未调用 Looper.prepare() 的线程内创建处理程序 Error public class MainActi
在我的 django 项目中,我有 4 个模型,它们都连接在一条链中。 模型_D > 模型_C > 模型_B > 模型_A 因此 Model_C 有一个指向 Model_B 的外键字段,而 Model
我是一名优秀的程序员,十分优秀!