2016-08-23 13 views
0

はファイルアンドロイド王国事前に定義されたデータベースのパフォーマンス

private String copyBundledRealmFile(InputStream inputStream, String outFileName) { 
    try { 
     File file = new File(this.getFilesDir(), outFileName); 
     FileOutputStream outputStream = new FileOutputStream(file); 
     byte[] buf = new byte[1024]; 
     int bytesRead; 
     while ((bytesRead = inputStream.read(buf)) > 0) { 
      outputStream.write(buf, 0, bytesRead); 
     } 
     outputStream.close(); 
     return file.getAbsolutePath(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

を読んで、レルムの構成]を作るためのコードはここに

 copyBundledRealmFile(SplashScreen.this.getResources().openRawResource(R.raw.tests), "test"); 


      RealmConfiguration config1 = new RealmConfiguration.Builder(SplashScreen.this) 
       .name("test") 
       .schemaVersion(1) 
       .migration(new Migration()) 
       .build(); 
     Realm.setDefaultConfiguration(config1); 
です

とrealmを一度読み取ってコピーすることを確認してください

しかし、データを読み込む問題は、アプリケーションを開くたびに約5秒かかるので、レルムのnstance

ここでは)レルム・インスタンスのコード

private static MyReleam instance; 
private final Realm realm; 

public MyReleam(Application application) { 
    realm = Realm.getDefaultInstance(); 
} 

public static MyReleam with(Fragment fragment) { 

    if (instance == null) { 
     instance = new MyReleam(fragment.getActivity().getApplication()); 
    } 
    return instance; 
} 

public static MyReleam with(Activity activity) { 

    if (instance == null) { 
     instance = new MyReleam(activity.getApplication()); 
    } 
    return instance; 
} 

public static MyReleam with(Application application) { 

    if (instance == null) { 
     instance = new MyReleam(application); 
    } 
    return instance; 
} 

public Realm getRealm() { 

    return realm; 
} 

と私はそれを使用して最適化し

答えて

0

感謝を参照してください。警告:これは潜在的に長く操作することができ、理想的にはバックグラウンドスレッドで実行する必要があります 私は、資産の紛争は、それは彼らがいることを述べた文書で資産

RealmConfiguration config1 = new RealmConfiguration.Builder(SplashScreen.this).assetFile(SplashScreen.this,"tests")//name of files in assets (test) 
       .name("test") 
       .schemaVersion(1).migration(new Migration()) 
       .build(); 

     Realm.setDefaultConfiguration(config1); 
1

1のロード時間を短縮する方法をここで

this.realm = MyReleam.with(this).getRealm(); 

それを使用します移行時に移入する代わりにinitialData()またはassetFile()(好ましくはassetFile())を使用してください。

2)私はhttps://realm.io/docs/java/latest/api/io/realm/RealmConfiguration.Builder.htmlとしてドキュメントを使用し、それは時代遅れの混乱だから、あなたがin this tutorialを読んだすべてを忘れて(私はMyReleamからですそれはだ伝えることができます)、代わりにmy articleにEpicPandaForceの答えのための

+0

内のファイルの名前だけだっ渡しました。 – androidAhmed

+0

どちらですか?私は何も見つかりませんでした。 – EpicPandaForce

+0

についてassestFile()https://realm.io/docs/java/latest/api/io/realm/RealmConfiguration.Builder.html – androidAhmed

関連する問題