Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio严格模式无法定位错误_Java_Android_Android Strictmode - Fatal编程技术网

Java Android Studio严格模式无法定位错误

Java Android Studio严格模式无法定位错误,java,android,android-strictmode,Java,Android,Android Strictmode,我在android studio中使用严格模式,但我无法找到导致错误的代码。错误是由于未关闭的对象导致的,但我已检查了所有活动,没有此类对象保持打开状态 错误日志 02-10 17:25:21.858 29937-29945/com.user E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoid

我在android studio中使用严格模式,但我无法找到导致错误的代码。错误是由于未关闭的对象导致的,但我已检查了所有活动,没有此类对象保持打开状态

错误日志

02-10 17:25:21.858 29937-29945/com.user E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
                                                            java.lang.Throwable: Explicit termination method 'close' not called
                                                             at dalvik.system.CloseGuard.open(CloseGuard.java:180)
                                                             at android.database.CursorWindow.<init>(CursorWindow.java:111)
                                                             at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
                                                             at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:140)
                                                             at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:134)
                                                             at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
                                                             at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:264)
                                                             at com.google.android.gms.internal.zzatg.zza(Unknown Source)
                                                             at com.google.android.gms.internal.zzatg.zza(Unknown Source)
                                                             at com.google.android.gms.internal.zzatw.zzc(Unknown Source)
                                                             at com.google.android.gms.internal.zzatu.zzb(Unknown Source)
                                                             at com.google.android.gms.internal.zzatu.zza(Unknown Source)
                                                             at com.google.android.gms.internal.zzatu$4.run(Unknown Source)
                                                             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                             at com.google.android.gms.internal.zzato$zzd.run(Unknown Source)
                                                            02-10 17:25:21.859 29937-29945/com.user E/StrictMode: Finalizing a Cursor that has not been deactivated or closed. database = /data/user/0/com.user/databases/google_app_measurement_local.db, table = null, query = select count(1) from messages
                                                            android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
                                                             at android.database.sqlite.SQLiteCursor.<init>(SQLiteCursor.java:98)
                                                             at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:50)
                                                             at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
                                                             at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
                                                             at com.google.android.gms.internal.zzatg.zza(Unknown Source)
                                                             at com.google.android.gms.internal.zzatg.zza(Unknown Source)
                                                             at com.google.android.gms.internal.zzatw.zzc(Unknown Source)
                                                             at com.google.android.gms.internal.zzatu.zzb(Unknown Source)
                                                             at com.google.android.gms.internal.zzatu.zza(Unknown Source)
                                                             at com.google.android.gms.internal.zzatu$4.run(Unknown Source)
                                                             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                             at com.google.android.gms.internal.zzato$zzd.run(Unknown Source)
02-10 17:25:21.858 29937-29945/com.user E/StrictMode:已在附加堆栈跟踪中获取资源,但从未释放。有关避免资源泄漏的信息,请参阅java.io.Closeable。
java.lang.Throwable:未调用显式终止方法“close”
位于dalvik.system.CloseGuard.open(CloseGuard.java:180)
位于android.database.CursorWindow(CursorWindow.java:111)
位于android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
位于android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:140)
位于android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:134)
位于android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
位于android.database.AbstractCursor.moveToFirst(AbstractCursor.java:264)
位于com.google.android.gms.internal.zzatg.zza(未知来源)
位于com.google.android.gms.internal.zzatg.zza(未知来源)
在com.google.android.gms.internal.zzatw.zzc(未知来源)
位于com.google.android.gms.internal.zzatu.zzb(未知来源)
在com.google.android.gms.internal.zzatu.zza(未知来源)
在com.google.android.gms.internal.zzatu$4.run(未知来源)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
位于java.util.concurrent.FutureTask.run(FutureTask.java:237)
位于com.google.android.gms.internal.zzato$zzd.run(未知来源)
02-10 17:25:21.859 29937-29945/com.user E/StrictMode:结束尚未停用或关闭的光标。database=/data/user/0/com.user/databases/google\u app\u measurement\u local.db,table=null,query=select count(1)from messages
android.database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭在此打开的游标或数据库对象
位于android.database.sqlite.SQLiteCursor.(SQLiteCursor.java:98)
位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:50)
位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
位于com.google.android.gms.internal.zzatg.zza(未知来源)
位于com.google.android.gms.internal.zzatg.zza(未知来源)
在com.google.android.gms.internal.zzatw.zzc(未知来源)
位于com.google.android.gms.internal.zzatu.zzb(未知来源)
在com.google.android.gms.internal.zzatu.zza(未知来源)
在com.google.android.gms.internal.zzatu$4.run(未知来源)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
位于java.util.concurrent.FutureTask.run(FutureTask.java:237)
位于com.google.android.gms.internal.zzato$zzd.run(未知来源)
我的基本活动课

public class BaseActivity extends AppCompatActivity {

public User_Registration user;
private Realm realmDb;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.i("called_base", "base");
    realmDb = Realm.getDefaultInstance();

    user = realmDb.where(User_Registration.class).findFirst();
    if (user == null)
        logout();
}

protected void logout() {
    realmDb.executeTransaction(realm -> {
        RealmResults<User_Registration> all = realm.where(User_Registration.class).findAll();
        Log.i("loggingout", "size" + all.size());
        all.deleteAllFromRealm();
        redirect();
    });
    Log.i("loggingout", "called");
}

private void redirect() {
    final Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
    finishAffinity();
    startActivity(intent);
}

private void closeDb() {
    if (realmDb != null && !realmDb.isClosed())
        realmDb.close();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    Log.i("realm", "onDestroyActivityBase");
    closeDb();
}
}
公共类BaseActivity扩展了AppCompativity{
公共用户\注册用户;
私有领域realmDb;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.i(“称为_base”、“base”);
realmDb=Realm.getDefaultInstance();
user=realmDb.where(user_Registration.class).findFirst();
if(user==null)
注销();
}
受保护的无效注销(){
realmDb.executeTransaction(领域->{
RealmResults all=realm.where(User_Registration.class).findAll();
Log.i(“loggingout”、“size”+all.size());
all.deleteAllFromRealm();
重定向();
});
Log.i(“注销”、“调用”);
}
私有无效重定向(){
最终意图=新意图(getApplicationContext(),LoginActivity.class);
有限性();
星触觉(意向);
}
私有void closeDb(){
if(realmDb!=null&&!realmDb.isClosed())
realmDb.close();
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
Log.i(“领域”、“onDestroyActivityBase”);
closeDb();
}
}
在我的活动中
private void fetchData() {
    userDataRepository dataRepository = new userDataRepository();
    Observable<ArrayList<user>> observable = dataRepository.getuser_List();

    observable.subscribe(users -> {
                Log.i("data", users.size() + "");

                items.addAll(users);
                userAdapter.notifyItemRangeInserted(0, users.size());

            });
    }
public class UserDataRepository implements UserDataStore, Lifecycle {

private UserDiskData diskData;

public UserDataRepository() {
    this.diskData = new UserDiskData();
}

@Override
public Observable<ArrayList<User>> getUser_List() {

    if (diskData.Users_Size() > 0) {
        return diskData.getUser_List();
    } else {
        final UserCloudData cloudData = new UserCloudData();

        Observable<ArrayList<User>> observable = cloudData.getUser_List();
        diskData.addAllUser(observable);
        return observable;
    }
}

@Override
public Single<User> getUser(int user_id) {

    if (diskData.isExists(user_id)) {
        return diskData.getUser(user_id);
    } else {
        final UserCloudData cloudData = new UserCloudData();

        Single<User> UserSingle = cloudData.getUser(user_id);
        diskData.addUser(UserSingle);
        return UserSingle;
    }
}

@Override
public void onDestroyCall() {
    diskData.onDestroyCall();
}
}
class UserDiskData implements UserDataStore, Lifecycle {

int Users_Size() {
    final Realm realm = Realm.getDefaultInstance();
    final RealmResults<User> results = realm.where(User.class).findAll();
    Log.i("disk", "pulledData" + results.size());
    realm.close();
    return results.size();
}

void addAllUser(Observable<ArrayList<User>> Users) {
    Log.i("disk", "addAll");
    Users.subscribe(Users1 -> {
        final Realm realm = Realm.getDefaultInstance();
        realm.executeTransaction(realmDb -> realmDb.copyToRealmOrUpdate(Users1));
        realm.close();
    });
}

void addUser(Single<User> User) {
    Log.i("disk", "addSingle");
    User.subscribe(Users1 -> {
        final Realm realm = Realm.getDefaultInstance();
        realm.executeTransaction(realmDb -> realmDb.copyToRealmOrUpdate(Users1));
        realm.close();
    });
}

@Override
public Observable<ArrayList<User>> getUser_List() {

    Log.i("disk", "called");
    final Realm realm = Realm.getDefaultInstance();
    final RealmResults<User> results = realm.where(User.class).findAll();
    ArrayList<User> list = new ArrayList<>();
    for (int i = 0; i < results.size(); i++)
        list.add(results.get(i));
    realm.close();
    Log.i("realmDisk", realm.isClosed() + "");
    return Observable.just(list);
}

boolean isExists(int id) {
    Log.i("disk", "isExists");
    final Realm realm = Realm.getDefaultInstance();
    final User User = realm.where(User.class).equalTo("id", id).findFirst();
    realm.close();
    //return User != null;
    return false;
}

@Override
public Single<User> getUser(int user_id) {
    Log.i("disk", "getSingle");
    final Realm realm = Realm.getDefaultInstance();
    final User User = realm.where(User.class).equalTo("id", user_id).findFirst();
    realm.close();
    return Single.just(User);
}

@Override
public void onDestroyCall() {

}
}