现在我正在使用静态布尔值来判断初始化是什么时候发生的。有没有更简单的方法知道我已经调用了初始化?
谢谢!!!
解决!!!!非常感谢你的评论。您需要在扩展应用程序的类中初始化解析,然后将其作为应用程序(而不是其他活动)添加到清单文件中。
:)
这是我使用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>
答案 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仍然可以运行,测试它。