我有一个包含很多 Activity 的应用程序,其中一些 Activity 已连接到Firebase数据库。最近,当我同时进行具有Firebase调用的 Activity 和之前的 Activity 时,我已经开始体验崩溃。应用程序崩溃后,它将重新启动,然后按预期方式工作。因此,只有在我通过USB安装它之后,它才能这样做。当崩溃发生时,Logcat会显示以下内容:
1-17 21:47:38.030 10998-11021/packagename D/FA: Logging event (FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash, timestamp=1516222057770, fatal=1}]
01-17 21:47:39.291 24162-10793/? V/FA-SVC: Logging event: origin=crash,name=app_exception(_ae),params=Bundle[{firebase_event_origin(_o)=crash, timestamp=1516222057770, fatal=1}]
01-17 21:47:39.321 24162-10793/? V/FA-SVC: Saving event, name, data size: app_exception(_ae), 51
01-17 21:47:39.321 24162-10793/? V/FA-SVC: Event recorded: Event{appId='packagename', name='app_exception(_ae)', params=Bundle[{firebase_event_origin(_o)=crash, timestamp=1516222057770, fatal=1}]}
01-17 21:47:39.331 24162-10793/? V/FA-SVC: Upload scheduled in approximately ms: 2620327
01-17 21:47:39.471 24162-10793/? V/FA-SVC: Scheduling upload with GcmTaskService
01-17 21:47:39.471 24162-10793/? V/FA-SVC: Scheduling task with Gcm. Time2620327
01-17 21:47:39.702 24162-10793/? V/FA-SVC: Background event processing time, ms: 412
引起我注意的部分是:
Logging event (FE): app_exception(_ae), bundle[{firebase_event_origin(_o)=crash
但是,我不知道该怎么办...很明显,它来自Firebase,但确切地来自哪里?
包含Firebase脚本的Java文件如下所示:
package packagename;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.storage.images.FirebaseImageLoader;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import packagename.model.Post;
import packagename.utils.Constants;
import packagename.utils.Utils;
public class Evenimente extends AppCompatActivity {
private RecyclerView mPostRV;
private FirebaseRecyclerAdapter < Post, PostViewHolder > mPostAdapter;
private DatabaseReference mPostRef;
static boolean calledAlready = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!calledAlready) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
calledAlready = true;
}
setContentView(R.layout.activity_evenimente);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
initialiseScreen();
}
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
private void sendPostToFirebase() {
Post post = new Post();
String UID = Utils.getUID();
post.setUID(UID);
post.setHeadline("Nume eveniment");
post.setZiua(25);
post.setOra("10:00");
post.setLuna("IAN");
post.setCategoria("Teatru");
post.setOrganizator("Casa de Cultura");
post.setStrada("Strada:");
post.setLocalitatea("Undeva");
/* post.setNumLikes(0);*/
post.setImageUrl("gs://packagename1234.appspot.com/teatru.jpg");
mPostRef.child(UID).setValue(post);
}
private void initialiseScreen() {
mPostRV = (RecyclerView) findViewById(R.id.post_rv);
mPostRV.setLayoutManager(new LinearLayoutManager(Evenimente.this));
mPostRef = FirebaseDatabase.getInstance().getReference(Constants.POSTS);
mPostRef.keepSynced(true);
setupAdaptater();
mPostRV.setAdapter(mPostAdapter);
}
private void setupAdaptater() {
mPostAdapter = new FirebaseRecyclerAdapter < Post, PostViewHolder > (
Post.class,
R.layout.item_layout_evenimente,
PostViewHolder.class,
mPostRef
) {
@Override
protected void populateViewHolder(PostViewHolder viewHolder, final Post model, int position) {
StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(model.getImageUrl());
Glide.with(Evenimente.this)
.using(new FirebaseImageLoader())
.load(storageReference)
.into(viewHolder.postIV);
viewHolder.setHeadline(model.getHeadline());
viewHolder.setZiua(model.getZiua());
viewHolder.setLuna(model.getLuna());
viewHolder.setOra(model.getOra());
viewHolder.setOrganizator(model.getOrganizator());
viewHolder.setCategoria(model.getCategoria());
viewHolder.setStrada(model.getStrada());
viewHolder.setLocalitatea(model.getLocalitatea());
}
};
}
public static class PostViewHolder extends RecyclerView.ViewHolder {
public ImageView postIV;
public TextView postHeadline;
public TextView postZiua;
public TextView postLuna;
public TextView postOra;
public TextView postOrganizator;
public TextView postCategoria;
public TextView postStrada;
public TextView postNumar_strada;
public TextView postLocalitatea;
public PostViewHolder(View itemView) {
super(itemView);
postIV = (ImageView) itemView.findViewById(R.id.post_iv);
postHeadline = (TextView) itemView.findViewById(R.id.headline_event);
postZiua = (TextView) itemView.findViewById(R.id.text_ziua);
postLuna = (TextView) itemView.findViewById(R.id.text_luna);
postOra = (TextView) itemView.findViewById(R.id.text_ora);
postOrganizator = (TextView) itemView.findViewById(R.id.text_organizator);
postCategoria = (TextView) itemView.findViewById(R.id.text_categoria);
postStrada = (TextView) itemView.findViewById(R.id.text_strada);
postLocalitatea = (TextView) itemView.findViewById(R.id.text_localitatea);
}
public void setPostImage(String url) {
StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(url);
}
public void setHeadline(String headline) {
postHeadline.setText(String.valueOf(headline));
}
public void setZiua(long ziua) {
postZiua.setText(String.valueOf(ziua));
}
public void setLuna(String luna) {
postLuna.setText(String.valueOf(luna));
}
public void setOra(String ora) {
postOra.setText(String.valueOf(ora));
}
public void setOrganizator(String organizator) {
postOrganizator.setText(String.valueOf(organizator));
}
public void setCategoria(String categoria) {
postCategoria.setText(String.valueOf(categoria));
}
public void setStrada(String strada) {
postStrada.setText(String.valueOf(strada));
}
public void setLocalitatea(String localitatea) {
postLocalitatea.setText(String.valueOf(localitatea));
}
}
}
在阅读了这个错误here之后,我发现有人暗示这可能是字符长度的问题,但是我不知道这是否是我的问题。我的数据库中没有超过40个字符。
Firebase上的数据库配置如下图所示:
错误是模糊的,我真的不知道从哪里开始。谁能帮我?谢谢!
最佳答案
您显示的日志不是因为此时您的应用崩溃了。那就是Firebase的Google Analytics(分析)记录您的应用先前崩溃的事实,并为此生成了分析事件。您还可以看到这些只是详细级别的严重性消息。真正的崩溃将伴随着带有错误级别严重性消息的消息,并且通常还会附带Java堆栈跟踪。
关于android - 记录事件(FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48310294/