我有一个应用程序,里面有很多 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 个字符。
错误是一个模糊的错误,我真的不知道从哪里开始。谁能帮我?谢谢!
最佳答案
您显示的日志并不是因为您的应用当时崩溃了。这是 Google Analytics for Firebase 记录您的应用程序之前崩溃的事实,并为此生成分析事件。您还可以看到这些只是详细级别的严重性消息。真正的崩溃将伴随着带有错误级别严重性消息的消息,并且通常伴随着 Java 堆栈跟踪。
关于android - 记录事件 (FE) : app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48310294/