2015-05-09 106 views
8

我想玩一点Firebase和Android。
我有一个RegisterActivity,和一个MainActivity。 我目前的流程是 - 从MainActivity开始 - 检查用户是否已注册,如果没有,请拨打RegisterActivity - 注册后致电MainActivity把Firebase.setAndroidContext()函数放在哪里

我遇到了拨打Firebase.setAndroidContext()致电的问题。
我有2个问题:

  1. 我应该只调用这个函数中的每个ActivtyApplication一次或一次?
  2. 如果问题1的答案只有一次,那我应该把它放在哪里?

谢谢大家, Giora。

+0

为什么你不想开始注册活动 - 检查用户登录 - 如果为true:启动MainActivity? – mbelsky

+1

根据当前文档: *“在新的SDK中,不再需要调用Firebase.setAndroidContext(),因此您可以将其从代码中移除”* https://firebase.google.com/support/guides/ firebase-android - 在部分**设置Android环境并启用脱机持久性** – gnB

回答

16

引述(步骤4)Firebase quickstart documentation

的火力地堡库必须使用Android初始化一次Context。这必须在任何Firebase参考创建或使用之前发生。

创建MyApplication.java

public class MyApplication extends android.app.Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     //Previous versions of Firebase 
     Firebase.setAndroidContext(this); 

     //Newer version of Firebase 
     if(!FirebaseApp.getApps(this).isEmpty()) { 
      FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
     } 
    } 
} 

而在你AndroidManifest.xml更新名称参数值:

<application 
     android:label="@string/app_name" 
     android:name=".MyApplication"> 
... 
</application> 
3

从Firebase的sample applications中可以看出,您应该将其放入您的Application

package com.firebase.androidchat; 

import com.firebase.client.Firebase; 

/** 
* @author Jenny Tong (mimming) 
* @since 12/5/14 
* 
* Initialize Firebase with the application context. This must happen before the client is used. 
*/ 
public class ChatApplication extends android.app.Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Firebase.setAndroidContext(this); 
    } 
} 

Source


Firebase.getAndroidContext()

设置应用程序上下文一旦你可以用它在任何你需要它之​​后。你随时随地都可以随时随地找回它。 我也建议使用Firebase.getAndroidContext()不是将其存储到变量中,以防止MemoryLeaks

+0

感谢您的回答 - 这也是正确的,但我只能将其中一个标记为答案。谢谢你的帮助! – gioravered

+0

@gioravered我回答第一:P但没问题。请在github上查看他们的示例应用程序。他们帮助你;) – mikepenz

+0

@gioravered其实对方的回答你标记为正确不回答你最初的问题如何使用'getAndroidContext()' – mikepenz

2

我不知道火力点,但我知道的Android ..一个Context是有关应用程序环境中的全局信息。你的ActivityContext所以我很确定Firebase.getAndroidContext()检索你的应用程序Context这是getApplicationContext(),因为这似乎是明智的。

我是否应该只在应用程序中调用该函数或在每个Activty中调用一次?

调用它,只要你需要方面火力codes-一个Context,但我认为,如果你在你的Application

叫它将适合最好的,如果问题1的答案是唯一的一次,然后我应该在哪里放?

如果它不是一次?你在哪里打电话?我想你会打电话给你需要的任何地方Context对不对?这样做,不管问题1的答案,但你可以落在Class.thisgetBaseContext()View.getContext()随时

+0

对不起,我的意思是setAndroidContext()而不是getAndroidContext()。 – gioravered

+0

即使我仍然在点..lol正确吗?我会珍惜upvote吗?@gioravered – Elltz