如何知道Parse.initialize()何时被调用?

时间:2014-07-29 22:44:58

标签: java parse-platform

现在我正在使用静态布尔值来判断初始化是什么时候发生的。有没有更简单的方法知道我已经调用了初始化?

谢谢!!!

解决!!!!非常感谢你的评论。您需要在扩展应用程序的类中初始化解析,然后将其作为应用程序(而不是其他活动)添加到清单文件中。

:)


这是我使用Parse的课程:

package com.example.myapp;

import com.parse.Parse;

import android.app.Application;

public class UseParse extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "id", "key");
 }
}   

这是我的Android清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
android:versionCode="1"
android:versionName="1.0" 
 >


 <uses-sdk android:minSdkVersion="11"
      android:targetSdkVersion="14"/>


 <supports-screens 
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>



<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE" android:required="false" />


<permission android:protectionLevel="signature"
android:name="com.example.myapp.permission.C2D_MESSAGE" />
<uses-permission android:name="com.example.myapp.permission.C2D_MESSAGE" />


<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:screenOrientation="portrait"
    android:label="@string/app_name"
    android:name ="com.example.myapp.UseParse"
    android:theme="@style/AppTheme" >
    <activity
        android:screenOrientation="portrait"
        android:name="com.example.myapp.SplashActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        android:theme="@style/FullscreenTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>
    <activity android:name=".LoginActivity" />
     //... more



    <service android:name="com.parse.PushService" />
    <receiver android:name="com.parse.ParseBroadcastReceiver">
    <intent-filter>
     <action android:name="android.intent.action.BOOT_COMPLETED" />
     <action android:name="android.intent.action.USER_PRESENT" />
        </intent-filter>
    </receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
     <category android:name="com.example.myapp" />
    </intent-filter>
</receiver>




</application>

</manifest>

2 个答案:

答案 0 :(得分:18)

创建一个Application Class并在onCreate中初始化解析。

public class YourApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    Parse.initialize(this, "id","key");
    }
}

在此之后它不会一次又一次地被召唤。

同样在清单中声明它

<application
    android:name="com.you.yourapp.YourApplication "

编辑:这是您初始化它的唯一地方。而不是登录活动或其他任何地方。

答案 1 :(得分:8)

如果您和我一样,出于某种原因无法使用自定义Application类,只需使用try / catch包围init方法,如下所示:

private void initParse() {
    try {
        Parse.initialize(getApplication(), "some id here", "another id here");
        ParseInstallation.getCurrentInstallation().saveInBackground();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这样它就不会崩溃整个应用程序,SDK仍然可以运行,测试它。