1

スプラッシュ アクティビティでデータベースを使用しています。しかし、アプリケーションを起動するたびに、以前の起動時間よりも時間がかかります。私の質問を手伝ってください。

private CreateDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    Thread t = new Thread() {
        public void run() {
            try {
                db = new CreateDatabase(Splash.this);
                final SQLiteDatabase w = db.getWritableDatabase();
                w.execSQL("insert into Fin values( '" +"AAAAAAA"+ "','" +"BBBBBBBBBBBBBBBBB"+ "',  '" +0+ "')");
                w.execSQL("insert into Fin values( '" +"CCCCCCCCCCCC"+ "','" +"DDDDDDDDD"+ "',  '" +12+ "')");
                w.close();
                db.close();
                sleep(5000);
                Intent it = new Intent("pack1.exp.DASHBOARD");
                startActivity(it);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                finish();
            }
        }
    };
    t.start();
}
4

3 に答える 3

1

コードは同じままであるため、スプラッシュのロードにおける唯一の違いは、テーブルFinの人口です。インデックスなどをチェックして、このテーブルが適切に最適化されていることを確認してください。特に多数のインデックスと大量のデータがある場合、クエリの処理が負荷ごとに遅くなる可能性があります。

于 2013-07-26T13:17:33.170 に答える
1

クエリの所要時間が 5 秒未満の場合にのみスリープする必要があります。それ以外では、クエリが起動するたびに時間がかかる理由がわかりません。

private CreateDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread t = new Thread() {
    public void run() {
        try {
            long timeStart = System.currentTimeMillis();
            db = new CreateDatabase(Splash.this);
            final SQLiteDatabase w = db.getWritableDatabase();
            w.execSQL("insert into Fin values( '" +"AAAAAAA"+ "','" +"BBBBBBBBBBBBBBBBB"+ "',  '" +0+ "')");
            w.execSQL("insert into Fin values( '" +"CCCCCCCCCCCC"+ "','" +"DDDDDDDDD"+ "',  '" +12+ "')");
            w.close();
            db.close();
            if((System.currentTimeMillis() - timeStart) < 5000){
            sleep(5000 - (System.currentTimeMillis() - timeStart)); //Only sleep if the database query takes less than 5 seconds
            }
            Intent it = new Intent("pack1.exp.DASHBOARD");
            startActivity(it);
            finish();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};
t.start();
}
于 2013-07-26T13:19:20.910 に答える