私はそれが狂ったと私は愚かな音を知っているが、私は今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のバグか私の無知かどうかはわかりませんが、データがウィジェットにロードされる唯一の方法です。今私は信頼できないオプションに思えるので、私はそれについていくつかの説明が必要です。
'onGetViewFactory'で' Realm.init() 'を呼び出すには**が必要ですか?これは、例えば、マルチプロセスなど、非常にトリッキーなことが起こっていることを意味するからです。 – EpicPandaForce