我有一个包含很多 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上的数据库配置如下图所示:
android - 记录事件(FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash-LMLPHP

错误是模糊的,我真的不知道从哪里开始。谁能帮我?谢谢!

最佳答案

您显示的日志不是因为此时您的应用崩溃了。那就是Firebase的Google Analytics(分析)记录您的应用先前崩溃的事实,并为此生成了分析事件。您还可以看到这些只是详细级别的严重性消息。真正的崩溃将伴随着带有错误级别严重性消息的消息,并且通常还会附带Java堆栈跟踪。

关于android - 记录事件(FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48310294/

10-10 08:49
查看更多