我的应用程序的主要活动开始很好,工作正常,一切都很花哨 - 但如果你切换到另一个应用程序并且应用程序被垃圾收集器销毁,当你回到应用程序时它就会被移动到应用程序中。 ll" super.onCreate(savedInstanceState)"。
这是我的onCreate():
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(LOG_TAG,"Activity Created");
super.onCreate(savedInstanceState);
... //Other stuff that isn't relevent
}
非常简单。 除非我使用taskswitcher切换然后在应用程序被垃圾收集器杀死以释放内存后切换回来,应用程序一旦崩溃" super.OnCreate(savedInstanceState)被调用"。
这是日志:
I/ActivityManager( 629): Start proc ambious.androidtroper for activity ambious.androidtroper/.MainActivity: pid=25512 uid=10016 gids={50016, 3003, 1028}
D/AndroidTroper(25512): Activity Created
E/AndroidRuntime(25512): FATAL EXCEPTION: main
E/AndroidRuntime(25512): java.lang.RuntimeException: Unable to start activity ComponentInfo{ambious.androidtroper/ambious.androidtroper.MainActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment ambious.androidtroper.MainActivity$ArticleFragment: make sure class name exists, is public, and has an empty constructor that is public
E/AndroidRuntime(25512): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2350)
E/AndroidRuntime(25512): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2400)
E/AndroidRuntime(25512): at android.app.ActivityThread.access$600(ActivityThread.java:153)
E/AndroidRuntime(25512): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
E/AndroidRuntime(25512): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(25512): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(25512): at android.app.ActivityThread.main(ActivityThread.java:5295)
E/AndroidRuntime(25512): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(25512): at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime(25512): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
E/AndroidRuntime(25512): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
E/AndroidRuntime(25512): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(25512): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment ambious.androidtroper.MainActivity$ArticleFragment: make sure class name exists, is public, and has an empty constructor that is public
E/AndroidRuntime(25512): at android.support.v4.app.Fragment.instantiate(Fragment.java:413)
E/AndroidRuntime(25512): at android.support.v4.app.FragmentState.instantiate(Fragment.java:97)
E/AndroidRuntime(25512): at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1783)
E/AndroidRuntime(25512): at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:213)
E/AndroidRuntime(25512): at ambious.androidtroper.MainActivity.onCreate(MainActivity.java:88)
E/AndroidRuntime(25512): at android.app.Activity.performCreate(Activity.java:5271)
E/AndroidRuntime(25512): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime(25512): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304)
E/AndroidRuntime(25512): ... 11 more
E/AndroidRuntime(25512): Caused by: java.lang.InstantiationException: can't instantiate class ambious.androidtroper.MainActivity$ArticleFragment; no empty constructor
E/AndroidRuntime(25512): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(25512): at java.lang.Class.newInstance(Class.java:1130)
E/AndroidRuntime(25512): at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
E/AndroidRuntime(25512): ... 18 more
W/ActivityManager( 629): Force finishing activity ambious.androidtroper/.MainActivity
I/ActivityManager( 629): Process ambious.androidtroper (pid 25512) has died.
现在这很奇怪,因为错误(ArticleFragment)中指定的类是公共的,DOES有一个公共的空构造函数,并且在定期启动应用程序时不会导致相同的错误:
public class ArticleFragment extends Fragment {
public ArticleFragment(){
//Empty constructor
}
}
我真的很茫然。错误是在" super.onCreate()"触发的。我不能忽略(显然),只有在垃圾收集后重新创建应用程序时才会触发。 我错过了什么?还有其他相关的东西,我可能忘记提及了吗? 谢谢。
答案 0 :(得分:3)
E / AndroidRuntime(25512):引起: android.support.v4.app.Fragment $ InstantiationException:无法实例化片段ambious.androidtroper.MainActivity $ ArticleFragment:确保以下内容:
试试这个,使它成为静态类:
public static class ArticleFragment extends Fragment {
public ArticleFragment(){
//Empty constructor
}
}
答案 1 :(得分:0)
要检查的几件事情:
您应该删除ArticleFragment上的构造函数,或者确保在构造函数中调用super()。
其次,您可能必须将ArticleFragment声明为活动中的静态嵌套类。我通常将片段编写为单独的类而不是内部类,所以当你声明它们时,我不确定android生命周期的后果......
答案 2 :(得分:0)
进程被终止并且您的数据将被清除但是当您恢复应用程序时,将调用方法onCreate并且状态先前将尝试恢复。 但是,您的应用无法恢复。因为一切都被清除了。当其他应用程序需要更多内存时,类已被卸载内存不足。