我一直在研究Android SDK平台,有点不清楚如何保存应用程序的状态.因此,考虑到'Hello,Android'示例的这种小型重新设计:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
private TextView mTextView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
if (savedInstanceState == null) {
mTextView.setText("Welcome to HelloAndroid!");
} else {
mTextView.setText("Welcome back.");
}
setContentView(mTextView);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这对于最简单的情况就足够了,但无论我如何远离应用程序,它总是以第一条消息响应.
我确信解决方案就像覆盖onPause或类似的那样简单,但我已经在文档中捅了大约30分钟左右,并且没有找到任何明显的东西.
我想在我的设备上仅以横向模式运行Hello World示例应用程序.
如果设备改为肖像,我会想要一个烤面包机.例如"请转到横向模式以运行您的应用程序".
我该怎么做?
我没有什么活动,从一个活动我打开另一个活动,然后回到第一个...
关键是onCreate被称为1,而onResume每次显示活动时.例如,当我关闭之前从A开始的B时,onResume被调用但不是onCreate ....
我的问题是我不想在onCreate之后运行onResume,我只想在没有调用onCreate的情况下运行代码
这可能没有静态标志吗?
有来自android的一些方法或标志,如comeAfterOnCreate?
@Override
protected void onResume() {
if(comesAfterOnCreate){
//DO not run this code
}else{
//run the long task
}
Run Code Online (Sandbox Code Playgroud)
我使用静态标志显示了许多解决方案的答案,感谢各位的努力和提供帮助,但我感兴趣的是有一些方法或东西......
对于在线游戏,很Activity高兴知道Android 的onDestroy()是否仅被调用,因为Android将重新创建它(例如设备轮换)或者用户选择退出游戏.
我的计划是设置一个标志,在Activity的onSaveInstanceState()时候的Android可能是重新创建的Activity:
private boolean mDestroyedForReCreation;
...
protected void onSaveInstanceState() {
...
mDestroyedForReCreation = true;
}
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你可以检查mDestroyedForReCreation在onDestroy():
这是正确的方法吗?如果是,是推荐还是有更好的解决方案?我希望如此,因为我不喜欢那个解决方案......