Android onCreate()不起作用

时间:2013-11-27 19:54:52

标签: java android android-activity back

我遇到了一个与停止我的Android应用程序有关的奇怪问题。在我的手机上,我有一个主页按钮和一个后退按钮,现在当我按下主页按钮进入我的应用程序后,程序按预期加载来自互联网的数据,但是当我按下后退按钮后进入我的应用程序时,数据无法加载。我已经调试了一定程度,并发现唯一的区别是后退按钮调用onCreate()方法。我很困惑为什么会发生这种情况。

以下是我的一些代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.d("DAP", "Created");

        setContentView(R.layout.activity_ltc);

        getActionBar().setTitle("LTC Charts");
        getActionBar().setLogo(
                getResources().getDrawable(R.drawable.new_litecoin_logo_large));

        TextView textView = (TextView) findViewById(R.id.ltcdata);
        textView.setText("Loading data...");

        TimerTask timer = new TimerTask() {

            @Override
            public void run() {

                parseJSON();
            }

        };

        Timer time = new Timer();
        time.schedule(timer, 500, 85);

    }

5 个答案:

答案 0 :(得分:2)

“按下后退按钮后进入我的应用程序时,数据无法加载。”

如果您已经启动了应用,则当您离开时,活动将暂停(并且会调用onPause)。当您导航回应用程序时,将恢复相同的活动实例(并调用onResume)。

请参阅http://developer.android.com/training/basics/activity-lifecycle/index.html

答案 1 :(得分:0)

这是因为您的活动尚未销毁。您应该做的是在活动的onresume中加入一些内容,以便在您返回活动时再次获取数据。如果您希望确保销毁数据并且用户永远不会离开活动,则可以销毁暂停中的所有内容。

答案 2 :(得分:0)

使用下面的恢复功能。

@Override
public void onResume(){
     //will be executed onResume
}

答案 3 :(得分:0)

正如其他人所说,覆盖onResume()

一种常见的模式是将常见的初始化代码提取到方法中,并从需要的地方调用它:

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

@Override
protected void onResume(){
    super.onResume();
    init();
}

private void init(){       
   setContentView(R.layout.activity_ltc);
   getActionBar().setTitle("LTC Charts");
   // ....
}

答案 4 :(得分:0)

这可能是因为您的活动未在AndroidManifest.xml上正确设置。

确保活动名称正确。如果您将活动插入某个包中,则也要包含该名称。例如,我有一个称为“ SettingsActivity”的活动(通常默认为MainActivity),该活动设置在名为“ Activities”的包中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
<activity android:name=".Activities.SettingsActivity">
...