【问题标题】:Android Method to run on activity start and not onCreate在活动开始而不是 onCreate 上运行的 Android 方法
【发布时间】:2011-10-30 15:05:06
【问题描述】:

我有一个方法需要在活动开始时运行。 我已经尝试将它放在 OnCreate 中,但如果活动有一段时间没有被触及,onCreate 会被调用两次(就是这种情况,我正在检查在线更新......所以这需要一些时间)

这就是为什么我不能将更新方法放在 onCreate 中

有什么想法吗?

谢谢你, 罗恩

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);
    checkUpdate();
}

private void checkUpdate(){
    Runnable runnable = new Runnable() {
        public void run() {
            try
            {
                // create a web request to check if i have the latest update
                HttpClient client = new DefaultHttpClient();  
.
.
.
.
.
        };
    new Thread(runnable).start();

【问题讨论】:

  • 您的活动是否仍在执行并且再次调用 onCreate?除非您旋转设备,否则我认为这是不可能的?
  • 设备没有转动,可能是因为屏幕变暗了?但我没有触摸它,并且再次调用了 onCreate 方法。
  • 查看活动的基本代码可能会有所帮助。可能您应该按照建议将更新检查放入 AsyncTask 中。

标签: android methods android-activity oncreate


【解决方案1】:

通常,您不希望将需要一些时间来执行的方法放在 UI 线程上。 相反,您可能希望创建 AsyncTask(或 Thread/Handlers)以在后台运行该方法。还要看看 onStart() 是否会帮助您摆脱 onCreate() 的一些逻辑。

【讨论】:

    【解决方案2】:

    使用布尔值来确定活动是否已经开始。

    【讨论】:

      【解决方案3】:

      您可以在 oncreate 中执行该方法,但添加一个类布尔字段以检查您是否已添加运行该方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-29
        相关资源
        最近更新 更多