on Create和on Start方法未调用

时间:2012-01-17 07:08:17

标签: android

实际上我已经创建了一个单例类。现在我的singleton类扩展了Activity,我在这个类上编写了onCreate()onStart()方法。但它永远不会被调用。我使用的代码如下所示。如果有人知道帮助我解决这些问题。

代码

public class cycleManager
{
private static CycleManager m_cycleManagerObj;

private CycleManager()
{           
    // Initialise Variable
    onInitialization();

    readData(this); // show error when call from here
}   

public static synchronized CycleManager getSingletonObject() 
{           
    if (m_cycleManagerObj == null)
    {
        m_cycleManagerObj = new CycleManager();
    }               
    return m_cycleManagerObj;
}

public Object clone() throws CloneNotSupportedException
{           
    throw new CloneNotSupportedException(); 
}

public void writeData(Context c) 
{
    SharedPreferences preferencesWrite  = c.getSharedPreferences("myPreferences", 0);
    SharedPreferences.Editor editor  = preferencesWrite.edit();
    // work to be done
}
public void readData(Context c)
{
    SharedPreferences preferencesRead = c.getSharedPreferences("myPreferences", 0);
    // work to be done
}
}

5 个答案:

答案 0 :(得分:1)

在AndroidManifest.xml中检查您的活动。

<activity
    android:configChanges="orientation|keyboardHidden"
    android:name=".ActivityName">

答案 1 :(得分:1)

事情是Android以自己的方式管理活动:从调用构造函数到调用所有生命周期方法。因此,如果您将Activity的构造函数声明为私有,那么Android将无法管理此活动。

为什么你需要单身活动类?考虑different launch modes

答案 2 :(得分:0)

它们不是公共方法。它们是受保护的方法。您应该覆盖现有的method.try,如下所示。

@Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    }

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 }

答案 3 :(得分:0)

这里的关键是Android应该管理你的活动生命周期,而不是你。

onCreate和onStart(以及onPause,onDestroy和所有其他Android活动生命周期函数)由Android主线程上的looper调用。

你是如何开始这项活动的?它是否在您的舱单中宣布为您的主要活动和发射器?你调用了startActivity并传​​递了类名吗?

您正在创建活动的单例实例,并且其构造函数是私有的,这表明Android在您需要时无法启动此活动,尽管某些函数用于将现有活动传递给被管理可能存在,我从来没有见过它。

如果永远不会调用onCreate和onStart,则表示Android不知道应该运行您的活动。

答案 4 :(得分:0)

您收到错误,因为您的类不是Context的子类。将Context属性添加到getSingletonObject(Context context)方法并将其传递给CycleManager(Context context)构造函数。