我的问题是因为最近的更改,我的应用程序不再加载。 我也不例外,应用程序没有崩溃,只是没有加载。 当我调试时,我看到我的应用程序在循环onCreate中调用.... 我不知道为什么。 我最近改变了我的SQLite管理。
MyApplication.java
public class MyApplication extends Application {
public static DbHandler handler;
....
@Override
public void onCreate()
{
super.onCreate();
handler = new DbHandler(this);
}
}
Class DbHandler(this)
public class DbHandler extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 2;
public static final String DATABASE_NAME = "myapp.db";
public DbHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
DatabaseManager.initializeInstance(this);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + PdvHandler.TABLE_SHOP);
db.execSQL("DROP TABLE IF EXISTS " + PdvHandler.TABLE_PROJECT);
// db.execSQL("DROP TABLE IF EXISTS " + TABLE_CAPTURE_INFO);
db.execSQL(PdvHandler.CREATE_PDV_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
int upgradeTo = oldVersion + 1;
while (upgradeTo <= newVersion) {
switch (upgradeTo) {
case 2:
try{
db.execSQL(AlertaHandler.DROP_ALERT);
db.execSQL(AlertaHandler.CREATE_ALERT);
}catch (Exception e) {
Crashlytics.logException(e);
}
break;
}
upgradeTo++;
}
}
}
最后是DatabaseManager.java
public class DatabaseManager {
private AtomicInteger mOpenCounter = new AtomicInteger();
private static DatabaseManager instance;
private static SQLiteOpenHelper mDatabaseHelper;
private SQLiteDatabase mDatabase;
public static synchronized void initializeInstance(SQLiteOpenHelper helper) {
if (instance == null) {
instance = new DatabaseManager();
}
mDatabaseHelper = helper;
}
public static synchronized DatabaseManager getInstance() {
if (instance == null) {
throw new IllegalStateException(
DatabaseManager.class.getSimpleName()
+ " is not initialized, call initializeInstance(..) method first.");
}
return instance;
}
public synchronized SQLiteDatabase openDatabase() {
if (mOpenCounter.incrementAndGet() == 1) {
// Opening new database
mDatabase = mDatabaseHelper.getWritableDatabase();
}
return mDatabase;
}
public synchronized void closeDatabase() {
if (mOpenCounter.decrementAndGet() == 0) {
// Closing database
mDatabase.close();
}
}
}
问题必须在那里,因为这是我改变的。 我只是不知道应该发生什么,以便在一个无休止的循环中调用初始活动(onCreate在一个无休止的循环中调用)
我在onCreate
中循环的活动public class SplashScreen extends Activity {
private Context ctx = null;
private Usuario mUser = null;
SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Crashlytics.start(this);
setContentView(R.layout.splash);
ctx = this;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
String activityName = getClass().getSimpleName().toString();
prefs.edit().putString("FrontActivity", activityName).commit();
}
}
编辑: 当我评论时:
Intent i = new Intent(SplashScreen.this,
LoginActivity.class);
startActivity(i);
在我的SplashScreen中,它不再循环 LoginActivity不会只显示登录屏幕......
EDIT2: 我有一个登录Crashlytics的帖子,我无法轻松建立关系,但它可能有所帮助
Fatal Exception: java.lang.RuntimeException
Could not read input channel file descriptors from parcel.
raw
android.view.InputChannel.nativeReadFromParcel (InputChannel.java)
android.view.InputChannel.readFromParcel (InputChannel.java:135)
android.view.IWindowSession$Stub$Proxy.add (IWindowSession.java:523)
android.view.ViewRootImpl.setView (ViewRootImpl.java:664)
android.view.WindowManagerImpl.addView (WindowManagerImpl.java:326)
android.view.WindowManagerImpl.addView (WindowManagerImpl.java:224)
android.view.WindowManagerImpl$CompatModeWrapper.addView (WindowManagerImpl.java:149)
android.view.Window$LocalWindowManager.addView (Window.java:552)
android.app.ActivityThread.handleResumeActivity (ActivityThread.java:2684)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2122)
android.app.ActivityThread.access$700 (ActivityThread.java:134)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1218)
android.os.Looper.loop (Looper.java:137)
android.app.ActivityThread.main (ActivityThread.java:4867)
java.lang.reflect.Method.invokeNative (Method.java)
dalvik.system.NativeStart.main (NativeStart.java)
问题是