1

我正在开发一个具有大量活动的 Android 应用程序。我的 MainActivity(开始活动)具有从服务器获取更新数据的代码。每次用户启动应用程序(第一次启动或在前台移动应用程序)时,我都想从服务器获取更新的数据。第一次启动很好,我获取数据。但是,当用户进行其他活动并最小化我的应用程序并再次打开时,它会从上一个状态开始。此时我如何检测应用程序正在重新启动,以便我可以再次获取数据。

我已经检查过 onResume()、onPause() 方法,但它们属于单独的活动。我想在应用程序级别捕获事件,就像我们通常在 iOS 应用程序中所做的那样。

4

3 回答 3

1

AFAIK你不能。您必须找到一种方法从所有活动中过滤 onResume()/onPause() 以找出应用程序进入后台。

一条建议:

 public abstract class AbstractActivity extends Activity{
    private static long pauseTime=0;
    private static final long MIN_PAUSE_TIME = 3000;

    protected void onPause(){
      super.onPause();
      pauseTime = System.currentTimeMillis();
    }

    protected void onResume(){
      super.onResume();
      if(System.currentTimeMillis()-pauseTime > MIN_PAUSE_TIME){
         // do server stuff
      }
    }
 }

然后让你所有的活动扩展这个。

于 2013-01-09T09:26:37.103 回答
0

我会说最好的起点是阅读有关活动生命周期的文档:http: //developer.android.com/training/basics/activity-lifecycle/starting.html

我的第一个想法是而不是运行代码onCreate()(这是我假设你正在做的),而是将代码放入onStart(),(但onResume()也可能是合适的) - 阅读文档并且应该很明显哪个最适合您的应用程序

于 2013-01-09T09:24:35.943 回答
-1

创建一个扩展至应用程序的类,然后实现 onPause() 和 onResume()。即如下..

 /**
* Top-level Application class for the your app.
 */
public class DummyApp extends Application {
    /* package */ static final String LOG_TAG = "DummyApp";
  onPause(){
  super.onPause();
  //do whatever you want--
  }

  onResume(){
  super.onResume();
   //Do whatever you want --
  }
  }

然后在 AndroidManifest.xml 中提及这个应用名称“DummyApp”,如下所示

<application android:name="DummyApp"
             android:label="@string/apLabel"
             android:icon="@drawable/ic_launcher">

我认为这可以解决...

于 2013-01-09T09:57:57.157 回答