我的android模拟器一直停止

问题描述 投票:0回答:2

这是我的登录应用。我的应用程序一直在崩溃。

程序代码:

package ru.foodrobot.wma;

import android.os.Looper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BaseJsonHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestHandle;
import com.loopj.android.http.RequestParams;
import com.loopj.android.http.TextHttpResponseHandler;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import cz.msebera.android.httpclient.Header;
import io.realm.Realm;
import io.realm.RealmConfiguration;

import io.realm.Realm;
import io.realm.RealmList;
import io.realm.RealmResults;


public class MainActivity extends AppCompatActivity {

    private Realm mRealm;
    private Realm mRealmInstance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart(){

        mRealm.init(this);
        RealmConfiguration config = new RealmConfiguration.Builder().build();
        mRealm.setDefaultConfiguration(config);
        mRealmInstance = mRealm.getInstance(config);

        //the code was here - 29.12.17
        //**********
        try {
            RealmResults User = mRealmInstance.where(Config.class).equalTo("name", "token").findAllAsync();
            if (User.size() > 0) {

                String nameOfUser = User.get(0).toString();

            } else if (User.size() == 0) {
                        /* Log.e("query","query size is "+User.size()); */
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        AsyncHttpClient client = new AsyncHttpClient();

        RequestParams rp = new RequestParams();
        rp.add("email", "[email protected]");
        rp.add("password", "123456");

        RequestHandle post = client.post("https://wms-amerzyanov.foodrobot.ru/api/v1/auth", rp, new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                // Root JSON in response is an dictionary i.e { "data : [ ... ] }
                // Handle resulting parsed JSON response here
                try {
                    String tokenString = response.getString("token");

                    mRealm.beginTransaction();
                    Config myConfig = mRealm.createObject(Config.class);
                    myConfig.name = "token";
                    myConfig.tokenValue = tokenString;
                    mRealm.commitTransaction();
                } catch (NullPointerException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    e.printStackTrace();
                }


            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String res, Throwable t) {
                // called when response HTTP status is "4XX" (eg. 401, 403, 404)
            }
        });
    }
}

我的logcat看起来像这样:

12-29 13:54:30.042 19758-19758 / ru.foodrobot.wma E / AndroidRuntime:FATAL EXCEPTION:main进程:ru.foodrobot.wma,PID:19758 java.lang.RuntimeException:无法启动活动ComponentInfo {ru。 foodrobot.wma / ru.foodrobot.wma.MainActivity}:io.realm.exceptions.RealmMigrationNeededException:由于以下错误,需要迁移: - 已添加类'Config'。在Android.app.A活动中的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665),android.app.A活动,活动传递。活动$ H.handleMessage(ActivityThread.java:1477)位于android.app.A.Toread.main的android.os.Handler.dispatchMessage(Handler.java:102)android.os.Looper.loop(Looper.java:154) ActivityThread.java:6119)位于com.android.internal.os的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)的java.lang.reflect.Method.invoke(Native Method)。 ZygoteInit.main(ZygoteInit.java:776)引起:io.realm.exceptions.RealmMigrationNeededException:由于以下错误,需要迁移: - 已添加类'Config'。 at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)at io.realm.internal.OsSharedRealm。(OsSharedRealm.java:184)at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:254)at io。 realm.BaseRealm。(BaseRealm.java:124)at io.realm.BaseRealm。(BaseRealm.java:93)at io.realm.Realm。(Realm.java:153)at io.realm.Realm.createInstance(Realm。 java:424)at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:342)at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:282)at io.realm.Realm.getInstance(Realm.java:353)at在Android.app的android.app.Activity.performStart(Activity.java:6696)的android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)的ru.foodrobot.wma.MainActivity.onStart(MainActivity.java:60) .ActivityThread.performLaunchActivity(ActivityThread.java:2628

android realm-mobile-platform
2个回答
1
投票

您的应用程序崩溃了,因为您更改了数据的结构。

如果您不想丢失已存储的数据,则必须配置迁移以处理此类情况。但是,如果您仍在开发中并且您的方案经常更改,则可以使用:

RealmConfiguration config = new RealmConfiguration.Builder ()
     .deleteRealmIfMigrationNeeded ()
     .build ()

有关如何配置迁移的更多信息:https://realm.io/docs/java/latest/#migrations


0
投票

您可以尝试删除您的应用并重新安装。此外,您可以使用以下代码替换您的RealmConfiguration:

RealmConfiguration config = new RealmConfiguration
                           .Builder()
                           .deleteRealmIfMigrationNeeded()
                           .build();
© www.soinside.com 2019 - 2024. All rights reserved.