public void OnResume(final SharedPreferences prefs) { super.OnResume(); if (_seekBar != null) { if (prefs.getBoolean("PuzzleShowSeekBar", true)) { _seekBar.setVisibility(View.VISIBLE); } else { _seekBar.setVisibility(View.GONE); } } ChessImageView._colorScheme = prefs.getInt("ColorScheme", 0); _view.setFlippedBoard(prefs.getBoolean("flippedBoard", false)); _iPos = prefs.getInt("puzzlePos", 0); getNumPuzzles(); if (_num == 0) { _num = 500; // first puzzle set has fixed amount _progressDlg = ProgressDialog.show( _parent, _parent.getString(R.string.title_installing), _parent.getString(R.string.msg_wait), false, false); // if(iTmp > 0) // _cr.delete(MyPuzzleProvider.CONTENT_URI_PUZZLES, "1=1", null); _thread = new Thread( new Runnable() { public void run() { try { InputStream is = _parent.getAssets().open("puzzles.pgn"); StringBuffer sb = new StringBuffer(); String s = "", data; int pos1 = 0, pos2 = 0, len; byte[] buffer = new byte[2048]; while ((len = is.read(buffer, 0, buffer.length)) != -1) { data = new String(buffer, 0, len); sb.append(data); pos1 = sb.indexOf("[Event \""); while (pos1 >= 0) { pos2 = sb.indexOf("[Event \"", pos1 + 10); if (pos2 == -1) break; s = sb.substring(pos1, pos2); processPGN(s); sb.delete(0, pos2); pos1 = sb.indexOf("[Event \""); } // break; // Log.i("run", "left: " + sb); // break; } processPGN(sb.toString()); Log.i("run", "Count " + _cnt); Message msg = new Message(); msg.what = 1; m_threadHandler.sendMessage(msg); is.close(); } catch (Exception ex) { Log.e("Install", ex.toString()); } } }); _thread.start(); return; } play(); }