我在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消失了,并在几秒钟后显示了数据。
这就像事件监听器稍后运行时一样。 帮我解决这个问题
答案 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()