Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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 使用SQLite会降低应用程序的速度_Java_Android_Sqlite_Android Studio_Cursor - Fatal编程技术网

Java 使用SQLite会降低应用程序的速度

Java 使用SQLite会降低应用程序的速度,java,android,sqlite,android-studio,cursor,Java,Android,Sqlite,Android Studio,Cursor,当我在模拟器(或真实设备)上输入应用程序时,我单击密码字段,它只会在很长一段时间(最多10秒)后激活。 告诉我为什么应用程序会变慢? MainActivity、DBHelper、manifest以及错误日志的代码如下所示 主活动代码 package com.nikitafront.androidlearning; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.C

当我在模拟器(或真实设备)上输入应用程序时,我单击密码字段,它只会在很长一段时间(最多10秒)后激活。 告诉我为什么应用程序会变慢? MainActivity、DBHelper、manifest以及错误日志的代码如下所示


主活动代码

package com.nikitafront.androidlearning;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import android.content.ContentValues;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button btnIn, btnReg;
private EditText login, password;
private DBHelper dbhelper;
private ConstraintLayout cl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnIn = (Button) findViewById(R.id.btnIn);
    btnReg = (Button) findViewById(R.id.btnReg);
    login = (EditText) findViewById(R.id.login);
    password = (EditText) findViewById(R.id.password);
    cl = (ConstraintLayout) findViewById(R.id.mainLayout);

    btnIn.setOnClickListener(this);
    btnReg.setOnClickListener(this);

    dbhelper = new DBHelper(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
}

@Override
public void onClick(View v) {
    SQLiteDatabase db = dbhelper.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    String log = login.getText().toString();
    String pass = password.getText().toString();
    Cursor cursor = db.query(dbhelper.TABLE_NAME, null, null, null,
            null, null, null);

    switch (v.getId()) {
        case R.id.btnReg:
            boolean f = false;

            while (cursor.moveToNext()) {
                String curr = cursor.getString(cursor.getColumnIndex(dbhelper.KEY_LOGIN));
                if (curr.equals(log)) {
                    f = true;
                }
            }

            if (f) {
                Toast.makeText(this, "Your wrote existing login!", Toast.LENGTH_LONG).show();
            } else {
                contentValues.put(dbhelper.KEY_LOGIN, log);
                contentValues.put(dbhelper.KEY_PASSWORD, pass);

                db.insert(dbhelper.TABLE_NAME, null, contentValues);

                login.setText("");
                password.setText("");

                Log.e("myl", "Your registration was successful");
                Toast.makeText(this, "Your registration was successful", Toast.LENGTH_LONG).show();
            }

            break;

        case R.id.btnIn:
            while (cursor.moveToNext()) {
                int idIndex = cursor.getColumnIndex(dbhelper.KEY_ID);
                int loginIndex = cursor.getColumnIndex(dbhelper.KEY_LOGIN);
                int passwordIndex = cursor.getColumnIndex(dbhelper.KEY_PASSWORD);

                if (cursor.getString(loginIndex).equals(log)) {
                    if (cursor.getString(passwordIndex).equals(pass)) {
                        Toast.makeText(this, "You are successfully logged in", Toast.LENGTH_LONG).show();
                        Log.e("myl", "You are successfully logged in");
                    } else {
                        Toast.makeText(this, "Your login attempt has failed", Toast.LENGTH_LONG).show();
                        Log.e("myl", "Your login attempt has failed");
                    }
                }
            }
            break;
            
        default:
            break;
    }
}
}

DBHelper代码

package com.nikitafront.androidlearning;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class DBHelper extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "newDatabase2905";
public static final String TABLE_NAME = "users";

public static final String KEY_ID = "_id";
public static final String KEY_LOGIN= "_login";
public static final String KEY_PASSWORD = "_password";

public DBHelper(@Nullable Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE "
            + TABLE_NAME + " ("
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
            + KEY_LOGIN + " TEXT, "
            +  KEY_PASSWORD + " TEXT"
            +  ");");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}
}

清单代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nikitafront.androidlearning">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:roundIcon="@drawable/icon"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    android:usesCleartextTraffic="true">
    <activity android:name=".NewActivity"></activity>
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


错误日志

 W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mColumns:[Ljava/lang/String; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mFillWindowForwardOnly:Z (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/os/StrictMode;->vmSqliteObjectLeaksEnabled()Z (greylist-max-o, linking, denied)
    Accessing hidden method Lcom/android/internal/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I (blacklist, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver; (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mStackTrace:Ljava/lang/Throwable; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteProgram;->getSql()Ljava/lang/String; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mColumnNameMap:Ljava/util/Map; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mColumns:[Ljava/lang/String; (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mColumnNameMap:Ljava/util/Map; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mColumnNameMap:Ljava/util/Map; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mColumns:[Ljava/lang/String; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mFillWindowForwardOnly:Z (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteCursor;->mCount:I (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;-><clinit>()V (blacklist, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->DEBUG_CLOSE_IDLE_CONNECTIONS:Z (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->sActiveDatabases:Ljava/util/WeakHashMap; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;-><init>(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/-$$Lambda$RBWjWVyGrOTsQrLCYzJ_G8Uk25Q;-><init>(Landroid/database/sqlite/SQLiteDatabase;)V (blacklist, linking, denied)
    W/androidlearnin: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteConnectionPool;->collectDbStats(Ljava/util/ArrayList;)V (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase$OpenParams;->toBuilder()Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;Z)Z (blacklist, linking, denied)
    W/androidlearnin: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;Z)Z (blacklist, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase$1;-><init>(Ljava/lang/String;)V (blacklist, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dispose(Z)V (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mCloseGuardLocked:Ldalvik/system/CloseGuard; (greylist-max-o, linking, denied)
    I/chatty: uid=10439(com.nikitafront.androidlearning) ection primary] identical 1 line
    W/androidlearnin: Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mCloseGuardLocked:Ldalvik/system/CloseGuard; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->sActiveDatabases:Ljava/util/WeakHashMap; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->sActiveDatabases:Ljava/util/WeakHashMap; (greylist-max-o, linking, denied)
    W/androidlearnin: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dump(Landroid/util/Printer;ZZLandroid/util/ArraySet;)V (blacklist, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteConnectionPool;->dump(Landroid/util/Printer;ZLandroid/util/ArraySet;)V (blacklist, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dumpAll(Landroid/util/Printer;ZZ)V (blacklist, linking, denied)
    W/androidlearnin: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dump(Landroid/util/Printer;ZZLandroid/util/ArraySet;)V (blacklist, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dumpDatabaseDirectory(Landroid/util/Printer;Ljava/io/File;Z)V (blacklist, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dumpDatabaseDirectory(Landroid/util/Printer;Ljava/io/File;Z)V (blacklist, linking, denied)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mColumns:[Ljava/lang/String;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mFillWindowForwardOnly:Z(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/os/StrictMode;->vmSqliteObjectLeaksEnabled()Z(greylist-max-o,linking,denied)
访问隐藏方法Lcom/android/internal/util/premissions;->checkArgumentNonnegative(ILjava/lang/String;)I(黑名单、链接、拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver;(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mStackTrace:Ljava/lang/Throwable;(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteProgram;->getSql()Ljava/lang/String;(greylist-max-o,linking,denied)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mcolumnamemap:Ljava/util/Map;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mColumns:[Ljava/lang/String;(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mcolumnamemap:Ljava/util/Map;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mcolumnamemap:Ljava/util/Map;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mColumns:[Ljava/lang/String;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mFillWindowForwardOnly:Z(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mDriver:Landroid/database/sqlite/SQLiteCursorDriver;(greylist-max-o,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteCursor;->mCount:I(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏方法Landroid/database/sqlite/SQLiteDatabase;->()V(黑名单,链接,拒绝)
访问隐藏字段Landroid/database/sqlite/SQLiteDatabase;->调试\关闭\空闲\连接:Z(greylist-max-o,链接,拒绝)
W/androidlearnin:访问隐藏字段Landroid/database/sqlite/SQLiteDatabase;->sActiveDatabases:Ljava/util/WeakHashMap;(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteDatabase;->(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/-$$Lambda$RBWjWVyGrOTsQrLCYzJ_G8Uk25Q;->(Landroid/database/sqlite/SQLiteDatabase;)V(黑名单、链接、拒绝)
W/androidlearnin:访问隐藏方法Landroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I(greylist-max-o,linking,denied)
访问隐藏字段Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object;(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteConnectionPool;->collectDbStats(Ljava/util/ArrayList;)V(greylist-max-o,linking,denied)
访问隐藏方法Landroid/database/sqlite/SQLiteDatabase$OpenParams;->toBuilder()Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;(greylist-max-o,链接,拒绝)
访问隐藏方法Landroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;Z)Z(黑名单、链接、拒绝)
W/androidlearnin:访问隐藏方法Landroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;Z)Z(黑名单,链接,拒绝)
访问隐藏方法Landroid/