我正在开发一个包含许多活动的Android应用程序。我的MainActivity(启动活动)具有从服务器获取更新数据的代码。我希望每次用户启动应用程序(第一次启动或在前台移动应用程序)时从服务器获取更新的数据。 第一次发布很好,我获取数据。但是,当用户进行其他活动并最小化我的应用程序并再次打开时,它将从上一个状态开始。在这一点上,我如何检测应用程序再次启动,以便我可以再次获取数据。
我已经检查过onResume(),onPause()方法,但它们属于个别活动。我想在应用程序级别捕获事件,就像我们通常在iOS应用程序中那样。
答案 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">
我认为这可能会解决......