Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:java.lang.IllegalStateException:ParsePlugins已初始化_Java_Android_Parse Platform - Fatal编程技术网

原因:java.lang.IllegalStateException:ParsePlugins已初始化

原因:java.lang.IllegalStateException:ParsePlugins已初始化,java,android,parse-platform,Java,Android,Parse Platform,我退出应用程序,重新启动它,我得到一个例外 public void onCreate() { -->here Parse.initialize(this, "adfsfasdfs", "asdfadfsdf"); ParseInstallation.getCurrentInstallation().saveInBackground(); ParseInstallation.create(identity == null ? "No Identity

我退出应用程序,重新启动它,我得到一个例外

public void onCreate() {
-->here Parse.initialize(this, "adfsfasdfs",
            "asdfadfsdf");
    ParseInstallation.getCurrentInstallation().saveInBackground();
    ParseInstallation.create(identity == null ? "No Identity Set"
            : identity);
        try {
            Parse.initialize(this);
            parseinited = true;
        }
        catch (IllegalStateException e) {
            e.printStackTrace();
        }
例外情况

07-08 23:27:29.411: E/AndroidRuntime(4889): Caused by: java.lang.IllegalStateException: ParsePlugins is already initialized
07-08 23:27:29.411: E/AndroidRuntime(4889):     at com.parse.ParsePlugins.set(ParsePlugins.java:27)
07-08 23:27:29.411: E/AndroidRuntime(4889):     at com.parse.ParsePlugins.access$200(ParsePlugins.java:11)
07-08 23:27:29.411: E/AndroidRuntime(4889):     at com.parse.ParsePlugins$Android.initialize(ParsePlugins.java:141)
07-08 23:27:29.411: E/AndroidRuntime(4889):     at com.parse.Parse.initialize(Parse.java:178)
07-08 23:27:29.411: E/AndroidRuntime(4889):     at com.mcruiseon.caregiri.Registration.onCreate(Registration.java:98)
清单文件


编辑:

我想知道为什么Parse会对此抛出异常。为什么不干脆
info
继续前进呢。它已初始化,如果我再次初始化它,那有什么大不了的

解决方案

我已经放弃了解析。不喜欢应用程序的方式,只是为了让维护变得烦人。

Parse.initialize()
对于整个应用程序只能调用一次

活动
onCreate
函数中调用它会导致它被多次初始化,因为在应用程序的生命周期中,活动可以被多次创建

相反,创建一个应用程序类(并将
android:name
属性添加到应用程序清单中)

应用程序:(注意不是活动/服务/接受者)

//注意,这是一个android.app.Application类。
公共类MyApplication扩展了android.app.Application{
@凌驾
public void onCreate(){
super.onCreate();
//在应用程序的整个生命周期中,此功能只会调用一次。
初始化(这个,
getResources().getString(R.string.parse_application_id),
getResources().getString(R.string.parse_client_key));
}
AndroidManifest:


....
....

没关系,我已经解决了。问题是由于语法错误。感谢大家的帮助

这很奇怪,因为我一直在关注所给出的内容,但现在我根本没有收到任何推送通知?我所做的唯一更改是:

  • 将应用程序类添加到清单&
  • 在app类中初始化解析。我正在使用SDK的v1.10.1
  • 显示

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:name="full.package.name.UseParse" >
    

    自己检查初始化,只处理异常,错误不会使应用程序崩溃,只是悄悄地抛出异常

    public void onCreate() {
    -->here Parse.initialize(this, "adfsfasdfs",
                "asdfadfsdf");
        ParseInstallation.getCurrentInstallation().saveInBackground();
        ParseInstallation.create(identity == null ? "No Identity Set"
                : identity);
    
            try {
                Parse.initialize(this);
                parseinited = true;
            }
            catch (IllegalStateException e) {
                e.printStackTrace();
            }
    

    我使用一个布尔isParseInitialized变量解决了这个问题。用于方向更改,即在同一应用程序会话中重新创建活动时。代码段:

       public class YourActivity extends Activity {
            private static boolean isParseInitialized = false;
            public static final String APPLICATION_ID = "your_application_id";
            public static final String CLIENT_KEY = "your_client_key";
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_youractivity);
    
    
        if(isParseInitialized==false) {
            Parse.initialize(this, APPLICATION_ID, CLIENT_KEY);
            isParseInitialized = true;
        }
    
      ..........
    
    }
    
    这是一个解决方案

    public class MainActivity extends AppCompatActivity {
        static  boolean  parseIsInit = false;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            if (!parseIsInit){
                Log.d("demo",""+parseIsInit );
            Parse.initialize(this, "PutHereYourKeys", "PutHereYourKeys");
                parseIsInit=true;
            }
            ParseInstallation.getCurrentInstallation().saveInBackground();
    
        }
    }
    

    您在哪个阶段调用
    Parse.initialize
    ,在您的
    onCreate
    中?是的,它在onCreate中,是
    应用程序的子类的
    onCreate
    ,还是调用
    Parse.initialize
    在其他可能被破坏的地方再次调用它?@JorgeCasariego谢谢,这帮助您没有告诉我有什么新的吗?你刚刚重新表述了这个问题。我在你的清单中没有看到一个命名的应用程序。你是在应用程序类中还是在活动/服务/接收者中使用
    onCreate
    ?如果你只在应用程序中使用它,它将不起作用。你能提供你的
    onCreate
    方法的代码和上下文吗我无法帮助找到解决方案。这是一个正在运行的已发布应用程序,拥有1000个客户。我正在向它添加解析。是的,这是一个活动,是的,我正在
    oncreate
    中初始化解析。是的,清单文件有一个
    应用程序
    @Siddharth“是的,这是一个活动,是的,我正在oncreate中初始化解析。”这是不正确的部分。如果你看我的答案,我正在调用
    public class Application extensed android.app.Application
    中的
    Parse.initialize()
    ,而不是@Khalos所说的
    public class MyActivity extensed Activity
    。你不能初始化(
    Parse.initialize()
    )在活动或服务中解析SDK,因为在整个应用程序流程中只能执行一次初始化。流程的入口点是
    应用程序
    类,您可以在@Khalos answear中扩展和添加解析初始化代码。因此,从Activity onCreate中删除
    Parse.initialize
    ,并将其放入application onCreate中。