TMa*_*ver 14 android onresume onpause
我一直在尝试将应用程序级别暂停和恢复类似于活动的onPause和onResume.我知道没有具有此功能的API.
我试着关注这篇文章:http://curioustechizen.blogspot.com/2012/12/android-application-level-pause-and.html
但到目前为止我没有运气.
有没有人能够做到这一点?你使用了什么样的范例?
如果您需要我将一些代码粘贴到此问题中,请与我们联系.谢谢您的帮助
该问题的另一个解决方案是仅跟踪每个活动的onStart()和onStop()调用的计数.例:
首先,创建一个类来保存计数:
public class ActiveActivitiesTracker {
private static int sActiveActivities = 0;
public static void activityStarted()
{
if( sActiveActivities == 0 )
{
// TODO: Here is presumably "application level" resume
}
sActiveActivities++;
}
public static void activityStopped()
{
sActiveActivities--;
if( sActiveActivities == 0 )
{
// TODO: Here is presumably "application level" pause
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在每个活动中,只需调用activityStarted()和activityStopped()方法:
@Override
public void onStart() {
super.onStart();
ActiveActivitiesTracker.activityStarted();
}
@Override
public void onStop() {
super.onStop();
ActiveActivitiesTracker.activityStopped();
}
Run Code Online (Sandbox Code Playgroud)
我有同样的问题。我的目标是锁定应用程序,如果用户放弃它。一个简单的目标,我认为这很容易实现。但是我找到的所有解决方案都很复杂。所以我想到了一个简单的解决方案:基于时间的锁。
基本上它是这样工作的:
因此我创建了一个小的类:
public class ApplicationLock {
private static final String TAG = ApplicationLock.class.getSimpleName();
private static final int LOCK_TIME = 1000; //lock after a second
private static boolean lock = true; //default is locked
private static Handler handler = new Handler();
private static Runnable runnable = new Runnable() {
@Override
public void run() {
lock = true;
Log.i("ActivityTracker", "App locked");
}
};
public static boolean activityStarted()
{
handler.removeCallbacks(runnable);
if(lock)
{
Log.i(TAG, "App resumed - LOCKED");
return true;
}else{
Log.i(TAG, "App resumed - NOT LOCKED");
return false;
}
}
public static void activityStopped()
{
handler.postDelayed(runnable, LOCK_TIME);
Log.i(TAG, "App paused - Starting countdown");
}
Run Code Online (Sandbox Code Playgroud)
只需在您的活动 onPause() 中调用 activityStopped() 并在 onResume() 中调用 activityStarted()。检查activityStarted() 的结果。如果返回 true,请锁定您的应用。如果应用程序的方向发生变化,onResume 会在 onPause 之后很快被调用,因此应用程序不会锁定。
这个解决方案可能不适合所有场景,但在我的情况下,它是最好的解决方案。此外,您可以更改倒计时,以增加用户体验(用户按错按钮并在几秒钟内返回应用程序,无需锁定应用程序)。希望这对其他人有用。