Java 使用SQLite会降低应用程序的速度
当我在模拟器(或真实设备)上输入应用程序时,我单击密码字段,它只会在很长一段时间(最多10秒)后激活。 告诉我为什么应用程序会变慢? MainActivity、DBHelper、manifest以及错误日志的代码如下所示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
主活动代码
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/