2017-12-29 3 views
0

Dies ist meine Login-App. Meine App hält an.mein Android-Emulator stoppt ständig

Programmcode:

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) 
      } 
     }); 
    } 
} 

meine logcat wie folgt aussieht:

12-29 13: 54: 30,042 19.758-19.758/ru.foodrobot.wma E/Android Runtime: FATAL AUSNAHME: Haupt Prozess: ru.foodrobot.wma, PID: 19758 java.lang.RuntimeException: Aktivität kann nicht gestartet werden ComponentInfo {ru.foodrobot.wma/ru.foodrobot.wma.MainActivity}: io.realm.exceptions.RealmMigrationNeededException: Migration erforderlich aufgrund folgender Fehler: - Klasse 'Conf ig 'wurde hinzugefügt. bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2665) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2726) bei android.app.ActivityThread.-wrap12 (ActivityThread.java) bei Android .app.ActivityThread $ H.handleMessage (ActivityThread.java:1477) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:154) bei android .app.ActivityThread.main (ActivityThread.java:6119) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (Z ygoteInit.java:886) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776) Ursache: io.realm.exceptions.RealmMigrationNeededException: Die Migration ist aufgrund folgender Fehler erforderlich: - Klasse 'Config' wurde hinzugefügt. bei io.realm.internal.OsSharedRealm.nativeGetSharedRealm (native Methode) bei io.realm.internal.OsSharedRealm. (OsSharedRealm.java:184) bei io.realm.internal.OsSharedRealm.getInstance (OsSharedRealm.java:254) bei io.realm.BaseRealm. (BaseRealm.java:124) bei io.realm.BaseRealm. (BaseRealm.java:93) bei io.realm.Realm. (Realm.java:153) bei io.realm .Realm.createInstance (Realm.java:424) bei io.realm.RealmCache.doCreateRealmOrGetFromCache (RealmCache.java:342) bei io.realm.RealmCache.createRealmOrGetFromCache (RealmCache.java:282) bei io.realm.Realm.getInstance (Realm.java:353) bei ru.foodrobot.wma.MainActivity.onStart (MainActivity.java:60) bei android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1248) bei android.app.Activity.performStart (Activity.java:6696) bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2628

Antwort

0

können Sie versuchen, Ihre App zu löschen und neu installieren. Außerdem können Sie Ihre RealmConfiguration mit diesem Stück Code ersetzen:

RealmConfiguration config = new RealmConfiguration 
          .Builder() 
          .deleteRealmIfMigrationNeeded() 
          .build(); 
+0

Ich benutze deleteRealmIfMigrationNeeded(), obwohl es nicht helfen. App wird nicht debuggt. – Anatoly

+0

Vielleicht [dieser Thread] (https://github.com/realm/realm-java/issues/4844) kann Ihnen helfen, das Problem zu finden. – Yuliwee

1

Ihre Anwendung abstürzt, weil Sie die Struktur Ihrer Daten geändert.

Wenn Sie die gespeicherten Daten nicht verlieren möchten, müssen Sie eine Migration für diese Art von Situation konfigurieren.wenn Sie noch in der Entwicklung und Ihr Schema ändert sich häufig sind, können Sie jedoch verwenden:

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

Weitere Informationen, wie Sie Ihre Migration konfigurieren: https://realm.io/docs/java/latest/#migrations

Verwandte Themen