Android多活动应用程序检测后台应用程序的最佳方法

时间:2013-01-09 09:11:44

标签: android android-activity activity-lifecycle

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

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

3 个答案:

答案 0 :(得分: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
      }
    }
 }

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

答案 1 :(得分:0)

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

我首先想到的是运行onCreate()中的代码(这是我假设您正在做的事情),将代码放在onStart()中,但onResume()可能也适当) - 阅读文档,应该明白哪一个最适合您的应用

答案 2 :(得分:-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">

我认为这可能会解决......