我有一个BaseActivity,其他所有活动都可以对其进行扩展。关键是,每当用户离开活动时,我都会将音乐静音。我也停止听电话。
问题是,onPause
只要用户在活动之间进行切换,就会被调用,这意味着该应用程序不必要地静音和停止telephonymanager
,即使仅telephonymanager
当用户离开该应用程序时该静音也应该停止。
@Override
protected void onPause() {
Log.v(TAG, "IN onPause!");
// unregister phone listener to telephony manager
tManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
mute();
super.onPause();
}
现在说我在public class myClass extends BaseActivity
和之间切换public class myOtherClass extends BaseActivity
。即使我只想 在用户离开应用程序时* 被调用,此开关也 不必要
执行。我该怎么办?onPause``onPause
*
感谢您的专家意见,
丰富
据我了解,您是在暂停BaseActivity的情况下静音播放音乐,而不是将其写在您的Music play活动中
例如:
public class BaseActivity extends AppCompatActivity{
@Override
public void onPause(){
//do things that common for all activities
}
}
public void MusicPlayActivity extends AppCompatActivity{
@Override
public void onPause(){
music.mute()
}
}
这会工作
更新
有几种方法可以检测应用程序是否在后台运行,但是只有其中一种是完全可靠的:自己使用Activity.onPause
,Activity.onResume
方法来跟踪应用程序的可见性。将“可见性”状态存储在其他一些类中。
示例 :实现自定义Application类(请注意isActivityVisible()静态方法):
公共类MyApplication扩展了Application {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
在AndroidManifest.xml中注册您的应用程序类:
<application
android:name="your.app.package.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
添加onPause
并添加onResume
到项目中的每个Activity中(如果您愿意,可以为您的Activity创建一个共同的祖先,但是如果您的Activity已经从MapActivity
/ ListActivity等扩展了,您仍然需要手工编写以下内容):
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}
在API级别14(Android
4.0)中添加了ActivityLifecycleCallbacks。您可以使用它们来跟踪用户当前是否可以看到应用程序的活动。有关详细信息,请查看下面的Cornstalks答案。
我试图解决一个具有时间窗约束的车辆路径问题,如果没有找到可行的解决方案,则允许解算器删除节点。然而,我发现在添加析取之后,即使施加了很大的惩罚,也会不必要地删除节点。 下面是一个简单的示例程序,以说明该问题。解算器将删除节点1并返回0的解- 我是不是走错了方向?任何帮助都将不胜感激。
问题内容: 在我拥有的一个小程序(尤其是cgo调用)上,go build和go run非常慢。我想缓存二进制文件,以便仅在源文件较新时才重建。我会使用带有%规则的简单Makefile,但是语言设计人员声称go的构建支持不需要Makefile。 我还有其他选择吗?go社区是否愿意使用另一个构建系统(可能是基于哈希的构建系统)来缓存和重用构建产品? 问题答案: 我写了一个工具来解决这个问题。单独不会检
问题内容: 调用声明为的Java方法时,JVM运行时必须执行哪些常规步骤? HotSpot 1.8.0 JVM如何实现JNI函数调用?涉及哪些检查步骤(例如,返回后未处理的异常?),JVM要执行哪些簿记操作(例如,本地引用注册表?),并且在调用本机Java方法之后控件将移至何处?如果有人可以提供本机HotSpot 1.8.0代码的入口点或重要方法,我也将不胜感激。 免责声明:我知道我自己可以阅读代
我在用 使用G1垃圾收集器。JVM参数是 然而,我在没有任何明显原因的情况下经历了完整的GC扫描,如何摆脱它们? GC日志,带有前面事件的一些尾部: 其他类似的: 其他类似问题报告: http://grokbase.com/t/openjdk/hotspot-gc-use/1192sy84j5/g1c-strange-full-gc-behaviorhttp://grokbase.com/p/op
问题内容: 这个问题既是编程的一半,也是数学的一半。我想通过一条曲线对点集进行插值,而又不添加不必要的极值,而这些极值保持“接近线性插值”,同时保持一条看起来平滑的曲线。我知道这种表述是模糊的,但是我希望通过一个例子可以使它更加清楚。让我们看一下下面的代码和结果: 我本来希望只有两个极值(大约x〜0和x〜2)的插值,而这里我们有5个极值。如果我们要求他们手工绘制一条平滑曲线的点,这就是大多数人会画