相关疑难解决方法(0)

如何使用保存实例状态保存Android Activity状态?

我一直在研究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分钟左右,并且没有找到任何明显的东西.

android application-state android-activity

2538
推荐指数
26
解决办法
74万
查看次数

仅在横向模式下运行应用程序?

我想在我的设备上仅以横向模式运行Hello World示例应用程序.

如果设备改为肖像,我会想要一个烤面包机.例如"请转到横向模式以运行您的应用程序".

我该怎么做?

android landscape

17
推荐指数
2
解决办法
3万
查看次数

我怎么知道onResume是在onCreate之后出现的?

我没有什么活动,从一个活动我打开另一个活动,然后回到第一个...

关键是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)

我使用静态标志显示了许多解决方案的答案,感谢各位的努力和提供帮助,但我感兴趣的是有一些方法或东西......

lifecycle android onresume oncreate

14
推荐指数
2
解决办法
1万
查看次数

在onSaveInstanceState()中设置标志以确定onDestroy()中的退出类型

对于在线游戏,很Activity高兴知道Android 的onDestroy()是否仅被调用,因为Android将重新创建它(例如设备轮换)或者用户选择退出游戏.

我的计划是设置一个标志,在ActivityonSaveInstanceState()时候的Android可能是重新创建的Activity:

private boolean mDestroyedForReCreation;
...
protected void onSaveInstanceState() {
    ...
    mDestroyedForReCreation = true;
}
Run Code Online (Sandbox Code Playgroud)

如果你这样做,你可以检查mDestroyedForReCreationonDestroy():

  • 如果设置了标志(true),请不要将用户从在线游戏中解雇.
  • 如果未设置标志(false),则将用户从在线游戏中解雇,因为他自愿退出游戏.

这是正确的方法吗?如果是,是推荐还是有更好的解决方案?我希望如此,因为我不喜欢那个解决方案......

android android-activity

8
推荐指数
1
解决办法
1186
查看次数