Android Java事件侦听器出现问题

时间:2020-07-02 13:21:38

标签: java android

我在android studio中制作了一个应用,它可以正常运行,但是在应用开始运行之前,它必须从Firebase实时数据库中检索数据。这需要花费几秒钟的时间,所以我决定放置另一个布局,该布局将作为开始屏幕显示,并且一旦数据加载,我们回到原始应用程序,因此我进行了这些更改

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.startscreen);

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference brightn = database.getReference("INIT_DATA");
    brightn.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            setContentView(R.layout.activity_main);
            -display data-
            .....
        }
           .......

如果我确实喜欢这个应用程序总是崩溃,并且如果我在事件监听器结束后添加setContentView(R.layout.activity_main);,则该应用程序无法兑现,但是第二个获取activity_main屏幕后,startscreen消失了,并在几秒钟后显示了数据。

这就像事件监听器稍后运行时一样。 帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您可以等到将内容视图设置为初始化,然后 useEffect(() => { getPushMessage(); requestUserPermission(); },[]) const requestUserPermission = async () => { const permission = await messaging().requestPermission(); if(await permission){ console.log('got permission', permission) } } const getPushMessage = () => { const unsubscribe = messaging().onMessage(async remoteMessage => { console.log(remoteMessage) Alert.alert('message.title', 'message.body') }); return unsubscribe } 在视图中像这样:

setOnClickListener()