2011-11-01 38 views
0

我遇到与我的手机模型SQL Lite有问题的是LG Optimus One P500。我的手机android版本从FroYo更新到姜饼,更新对我来说很好。我的应用程序也适用于其他手机型号。添加SQL Lite代码后关闭Android应用程序

应用程序起初也显示我的主页,但是当我开始游戏时,问题出现,然后强制关闭我的应用程序。

数据库创建(初始化)活动在评分页面显示后开始,所以我认为问题不应该存在于我开始游戏之后,但是所有这些问题都是在我添加数据库代码之后才开始的。

为了更好地理解我的行为是这样的:

  1. 在启动时获取名称,然后在按下启动按钮变量 后一个字符串存储的名称。 (我的问题然后存在于这部分)
  2. 我有一个计时器和分数文本在我的第二个布局,这将在游戏结束后提取。
  3. 现在将创建数据库(如果尚未存在),然后这3个数据将存储在数据库中。

这里是我的数据库代码(我只是从一个教程得到它从网上):

public class DataHelper { 

    private static final String DATABASE_NAME = "scores.db"; 
     private static final int DATABASE_VERSION = 1; 
     private static final String TABLE_NAME = "tblScores"; 

     private Context context; 
     private SQLiteDatabase db; 

     private SQLiteStatement insertStmt; 
     private static final String INSERT = "insert into " 
      + TABLE_NAME + "(name,score,time) values (?,?,?)"; 

     public DataHelper(Context context) { 
       this.context = context; 
       OpenHelper openHelper = new OpenHelper(this.context); 
       this.db = openHelper.getWritableDatabase(); 
       this.insertStmt = this.db.compileStatement(INSERT); 
      } 

     public long insert(String name, String score, String time) { 
      this.insertStmt.bindString(1, name); 
      this.insertStmt.bindString(2, score); 
      this.insertStmt.bindString(3, time); 
      return this.insertStmt.executeInsert(); 
     } 

     public void deleteAll() { 
      this.db.delete(TABLE_NAME, null, null); 
     } 

     public List<String> selectAll() { 
       List<String> list = new ArrayList<String>(); 
       Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name","score","time" }, 
       /*"name in ('A','B')"*/ null, null, /*"name"*/null, null, "score, time desc"); 
       if (cursor.moveToFirst()) { 
       do { 
        list.add(cursor.getString(0)+" "+cursor.getString(1)+" "+cursor.getString(2)); 
        //list.add(cursor.getString(1)); 
       } while (cursor.moveToNext()); 
       } 
       if (cursor != null && !cursor.isClosed()) { 
       cursor.close(); 
       } 
       return list; 
      } 

     private static class OpenHelper extends SQLiteOpenHelper { 

      OpenHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      } 

      @Override 
      public void onCreate(SQLiteDatabase db) { 
      db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT, score TEXT, time TEXT)"); 
      } 

      @Override 
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      Log.w("Example", "Upgrading database, this will drop tables and recreate."); 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
      onCreate(db); 
      } 
     } 
    } 

下面是从我的手机日志文件:

[android.intent.category.LAUNCHER] flg=0x10200000 cmp=arc.android.memorygame/.Ma 
inActivity } from pid 1875 
D/PhoneWindow(1875): <!>com.android.internal.policy.impl.PhoneWindow 1472<!> co 
uldn't save which view has focus because the focused view com.jiubang.ggheart.ap 
[email protected] has no id. 
I/ActivityManager(1573): Start proc arc.android.memorygame for activity arc.and 
roid.memorygame/.MainActivity: pid=12927 uid=10098 gids={1015} 
I/ggheart (1875): <!>fs 742<!> onStop 
I/wpa_supplicant(1731): wpa_supplicant_get_scan_results: Start 
I/wpa_supplicant(1731): CTRL-EVENT-SCAN-RESULTS Ready 
I/wpa_supplicant(1731): wpa_supplicant_event_scan_results: ap_scan 1, disconne 
cted 0 
I/wpa_supplicant(1731): No suitable AP found. 
I/wpa_supplicant(1731): Setting scan request: 20 sec 0 usec 
I/dun_service(1481): process rmnet event 
I/dun_service(1481): rstate == DUN_RMNETSTATE_ERROR in dun_monitor_kevents 
V/WifiMonitor(1573): <!>android.net.wifi.WifiMonitor$MonitorThread 176<!> Event 
[Setting scan request: 20 sec 0 usec] 
I/#LGIME (1671): <!>com.jungle.android.utils.Glog 32<!> #### onStartInput: res 
tarting=false, fieldId=2131099699 
I/ActivityManager(1573): <!>com.android.server.am.ActivityRecord 444<!> Display 
ed arc.android.memorygame/.MainActivity: +1s490ms 
D/StatusBarPolicy(1657): [BRIGHTHY] 0. mDataNetType: 1 
D/StatusBarPolicy(1657): [BRIGHTHY] curNetwork=51502 curHPLMN=51502 
E/dalvikvm-heap(12927): 9850880-byte external allocation too large for this proc 
ess. 
E/GraphicsJNI(12927): VM won't let us allocate 9850880 bytes 
D/skia (12927): --- decoder->decode returned false 
W/dalvikvm(12927): threadid=1: thread exiting with uncaught exception (group=0x4 
0018560) 
E/AndroidRuntime(12927): FATAL EXCEPTION: main 
E/AndroidRuntime(12927): android.view.InflateException: Binary XML file line #2: 
Error inflating class <unknown> 
E/AndroidRuntime(12927):  at android.view.LayoutInflater.createView(Layout 
Inflater.java:518) 
E/AndroidRuntime(12927):  at com.android.internal.policy.impl.PhoneLayoutI 
nflater.onCreateView(PhoneLayoutInflater.java:56) 
E/AndroidRuntime(12927):  at android.view.LayoutInflater.createViewFromTag 
(LayoutInflater.java:568) 
E/AndroidRuntime(12927):  at android.view.LayoutInflater.inflate(LayoutInf 
later.java:386) 
E/AndroidRuntime(12927):  at android.view.LayoutInflater.inflate(LayoutInf 
later.java:320) 
E/AndroidRuntime(12927):  at android.view.LayoutInflater.inflate(LayoutInf 
later.java:276) 
E/AndroidRuntime(12927):  at com.android.internal.policy.impl.PhoneWindow. 
setContentView(PhoneWindow.java:207) 
E/AndroidRuntime(12927):  at android.app.Activity.setContentView(Activity. 
java:1657) 
E/AndroidRuntime(12927):  at arc.android.memorygame.MainActivity.startGame 
(MainActivity.java:194) 
E/AndroidRuntime(12927):  at arc.android.memorygame.MainActivity$1.onClick 
(MainActivity.java:108) 
E/AndroidRuntime(12927):  at android.view.View.performClick(View.java:2485 
) 
E/AndroidRuntime(12927):  at android.view.View$PerformClick.run(View.java: 
9080) 
E/AndroidRuntime(12927):  at android.os.Handler.handleCallback(Handler.jav 
a:587) 
E/AndroidRuntime(12927):  at android.os.Handler.dispatchMessage(Handler.ja 
va:92) 
E/AndroidRuntime(12927):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(12927):  at android.app.ActivityThread.main(ActivityThrea 
d.java:3729) 
E/AndroidRuntime(12927):  at java.lang.reflect.Method.invokeNative(Native 
Method) 
E/AndroidRuntime(12927):  at java.lang.reflect.Method.invoke(Method.java:5 
07) 
E/AndroidRuntime(12927):  at com.android.internal.os.ZygoteInit$MethodAndA 
rgsCaller.run(ZygoteInit.java:874) 
E/AndroidRuntime(12927):  at com.android.internal.os.ZygoteInit.main(Zygot 
eInit.java:632) 
E/AndroidRuntime(12927):  at dalvik.system.NativeStart.main(Native Method) 

E/AndroidRuntime(12927): Caused by: java.lang.reflect.InvocationTargetException 
E/AndroidRuntime(12927):  at java.lang.reflect.Constructor.constructNative 
(Native Method) 
E/AndroidRuntime(12927):  at java.lang.reflect.Constructor.newInstance(Con 
structor.java:415) 
E/AndroidRuntime(12927):  at android.view.LayoutInflater.createView(Layout 
Inflater.java:505) 
E/AndroidRuntime(12927):  ... 20 more 
E/AndroidRuntime(12927): Caused by: java.lang.OutOfMemoryError: bitmap size exce 
eds VM budget 
E/AndroidRuntime(12927):  at android.graphics.BitmapFactory.nativeDecodeAs 
set(Native Method) 
E/AndroidRuntime(12927):  at android.graphics.BitmapFactory.decodeStream(B 
itmapFactory.java:460) 
E/AndroidRuntime(12927):  at android.graphics.BitmapFactory.decodeResource 
Stream(BitmapFactory.java:336) 
E/AndroidRuntime(12927):  at android.graphics.drawable.Drawable.createFrom 
ResourceStream(Drawable.java:697) 
E/AndroidRuntime(12927):  at android.content.res.Resources.loadDrawable(Re 
sources.java:1709) 
E/AndroidRuntime(12927):  at android.content.res.TypedArray.getDrawable(Ty 
pedArray.java:601) 
E/AndroidRuntime(12927):  at android.view.View.<init>(View.java:1951) 
E/AndroidRuntime(12927):  at android.view.View.<init>(View.java:1899) 
E/AndroidRuntime(12927):  at android.view.ViewGroup.<init>(ViewGroup.java: 
286) 
E/AndroidRuntime(12927):  at android.widget.LinearLayout.<init>(LinearLayo 
ut.java:120) 
E/AndroidRuntime(12927):  ... 23 more 
W/ActivityManager(1573): Force finishing activity arc.android.memorygame/.Mai 
nActivity 
W/ActivityManager(1573): Activity pause timeout for HistoryRecord{4070d4e8 arc. 
android.memorygame/.MainActivity} 
I/DemoService(1875): <!>fs 730<!> DiyScheduer.onStart 
I/ggheart (1875): <!>fs 732<!> onStart 
I/ActivityManager(1573): No longer want com.viber.voip:keepAliveReceiver (pid 2 
474): hidden #16 
D/StatusBarPolicy(1657): [BRIGHTHY] 0. mDataNetType: 1 
D/StatusBarPolicy(1657): [BRIGHTHY] curNetwork=51502 curHPLMN=51502 
I/#LGIME (1671): <!>com.jungle.android.utils.Glog 32<!> #### onStartInput: res 
tarting=false, fieldId=-1 
I/ActivityManager(1573): Process arc.android.memorygame (pid 12927) has died. 

而且,任何人都可以帮助我在Java中查询?我是这个新手。正如你看到的,我只是编辑然后测试查询命令。有关如何工作的详细视图将很好。

+4

你可以发布崩溃的堆栈跟踪,所以我们知道是什么造成了它? –

+0

我不能,因为你看到问题只发生在我的手机上,而在其他手机上工作正常。当我将它部署在我的模拟器上时,它也可以正常工作。我使用Android 2.2版本模拟器工作,并将其部署在2.2和2.3版本的手机上,除了我的手机是2.3更新版本之外,所有手机都可以正常工作。 – KaHeL

+0

您仍然可以查看logcat。只需使用'adb -d logcat'查看设备中的日志。确保您的设备已连接到电脑并打开手机中的USB调试。 –

回答

0

好吧。例外是在那里 - OutOfMemoryError同时膨胀一个位图

+0

是的,它似乎是它的主要原因,但我想知道为什么它只发生在我的第一个版本工作正常,而我添加数据库活动后? – KaHeL

+0

可能是因为它以前是魔力,数据库的额外开销将其放在边缘。 –

+0

我明白了,那么这个解决方案呢? – KaHeL