我正在创建一个应用程序,一旦我在wordpress网站上发布新帖子就会显示通知。
现在,只要我在wordpress网站上发帖,就会生成通知。
但是在40-45分钟后,应用程序崩溃并在后台被杀,并出现以下错误: -
the error that showed after the app crashes
我尝试了许多解决方案,但都没有奏效
我不想使用firebase
进行通知。
我必须从wordpress实时获取数据,然后创建通知。
以下是生成通知的代码: -
private void setupNotificationListener(){
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
flag=1;
//System.out.println(flag);
gson = new Gson();
list = (List) gson.fromJson(s, List.class);
postTitle = new String[list.size()];
postContent=new String[list.size()];
System.out.println("shiv class:"+list.size());
for(int i=0;i<list.size();++i) {
mapPost = (Map<String, Object>) list.get(i);
mapTitle = (Map<String, Object>) mapPost.get("title");
postTitle[i] = (String) mapTitle.get("rendered");
mapContent = (Map<String, Object>) mapPost.get("content");
postContent[i] = (String) mapContent.get("rendered");
}
if(!alreadyNotified(postTitle[0])){
Log.d("not notified","");
createNotif(postContent[0],postTitle[0]);
saveNotificationKey(postTitle[0]);
}else{
System.out.print("already notified");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.d("Error","Error");
}
});
rQueue = Volley.newRequestQueue(NotifierService.this);
rQueue.add(request);
NotifierService.getInstance().getRequestQueue().getCache().clear();
}
答案 0 :(得分:1)
您可以从计时器创建requestQueue,因此每5秒钟一次。在执行的代码中,您始终会创建一个新的请求队列。这不会起作用,你应该将requestQueue保持为最终的全局变量,并在构造函数中只创建一次。
public class NotifierService extends Service {
private final RequestQueue rQueue;
NotifierService() {
this.rQueue = Volley.newRequestQueue(this);
}
private void setupNotificationListener() {
// do your request handling
}
}
可能会发生OutOfMemoryError,因为您创建了许多未正确收集垃圾的对象