2017-07-19 9 views
2

私はそれが狂ったと私は愚かな音を知っているが、私は今20倍のようにそれをテストし、私はそれについて他の説明がない、多分私は間違って何かをやっているまたは私は知らない。Androidスタジオのバグ、Log.dを追加して修正?

私は、レルムデータベースを使用してデータをロードするウィジェットを作成しています。

public class MyApp extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Realm.init(this); 
     RealmConfiguration realmConfiguration = new RealmConfiguration.Builder().build(); 
     Realm.setDefaultConfiguration(realmConfiguration); 
    } 
} 

は、その後、私はMainActivityでレルムにいくつかの情報を追加します。私は、アプリケーションレベルで宣言レルムのデフォルト設定を持っています。私は、領域からデータをロードし、それをRemoteViewsFactoryに入れるRemoteViewsServiceを実行するウィジェットプロバイダを持っています。ここには、興味深い部分があるRemoteViewsServiceがあります:

public class MyWidService extends RemoteViewsService { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    @Override 
    public MyWidFactory onGetViewFactory(Intent intent) { 
     Log.d("MyWidService", " onGetViewFactory()<<<<<<<<<<"); 
     final Context context = getApplicationContext(); 
     Realm.init(context); 
     Realm realm = Realm.getDefaultInstance(); 
     realm.isAutoRefresh(); 
     ArrayList<String> myList = new ArrayList<>(); 
     RealmResults<Task> myResults = realm.where(Task.class).findAll(); 
     final int myResLength = myResults.size(); 
     Log.d("myResLength", " "+ myResLength); 
     for(int j = 0; j<myResLength; j++){ 
      myList.add(myResults.get(j).getTaskText()); 
      Log.d("tasks", " " + myList.get(j)); 
     } 
     return new MyWidFactory(context, intent, myList); 
    } 

} 

それでは、Log.d("myResLength", " "+ myResLength);が表示されますか?私は理由を知りませんが、ウィジェットは、それなしでデータがロードされていないことを単に示しています。さらに、Log.dがなければ、Android Monitorはコンパイラsimpyがそれ以降のサイクルで全体をスキップすることを示しています。私はこれがAndroidのバグかRealmのバグか私の無知かどうかはわかりませんが、データがウィジェットにロードされる唯一の方法です。今私は信頼できないオプションに思えるので、私はそれについていくつかの説明が必要です。

+1

'onGetViewFactory'で' Realm.init() 'を呼び出すには**が必要ですか?これは、例えば、マルチプロセスなど、非常にトリッキーなことが起こっていることを意味するからです。 – EpicPandaForce

答えて

0

@EpicPandaForceの回答に続いて、私はサービスからRealm.init()を削除しました。ありがとうございました!

関連する問題