假设我们有一个带默认行为的默认空活动,使用默认意图标志启动.用户按下设备上的后退按钮.活动消失......但实际上怎么样?
finish()?onDestroy被称为)?onPause和onStop- > onStart和onResume被称为?)我正在寻找一个可靠的答案,所以如果你不完全确定这里发生了什么,请不要回答.
我正在开发一个增强现实应用程序,其中我有一个摄像头预览屏幕,我在其上绘制了一些相对于设备移动而移动的标记.
当我lock and unlock在设备上时,标记会冻结并且不会进一步移动.我无法找到发生这种情况的原因.这有什么可行的解决办法吗?任何帮助将不胜感激.
我的SurfaceView类:
public class CameraSurface extends SurfaceView implements SurfaceHolder.Callback
{
private static SurfaceHolder holder = null;
public static Camera camera = null;
Activity ctx;
public CameraSurface(Activity context) {
super(context);
ctx=context;
try {
holder = getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public CameraSurface(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CameraSurface(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
if …Run Code Online (Sandbox Code Playgroud) I am using a FragmentActivity and sometimes on Crashlytics, I am able to see an exception Fatal Exception: java.lang.RuntimeException: Unable to pause activity
Below is the onPause of my FragmentActivity
@Override
protected void onPause() {
super.onPause();
if (EventBus.getDefault().isRegistered(this))
EventBus.getDefault().unregister(this);
}
Run Code Online (Sandbox Code Playgroud)
Here is the stack trace of this crash.
Fatal Exception: java.lang.RuntimeException: Unable to pause activity {com.avail.easyloans.android/com.avail.easyloans.feature.marketplace.activities.ActivityMarketplace}: java.lang.IllegalStateException: Restarter must be created only during owner's initialization stage
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3471)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3430)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3402)
at android.app.ActivityThread.access$1300(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1416)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157) …Run Code Online (Sandbox Code Playgroud) android android-lifecycle illegalstateexception onpause android-fragmentactivity
我想知道当应用程序进入后台并进入前台时,在应用程序级别没有回调的原因是什么.Activityclass's onPause并且onResume仅在当前的顶级活动中调用.如果我想停止一些具有应用程序级别范围的后台任务,那么当应用程序进入后台时,我没有简单的方法可以阻止它.对这些事件回调的需求很高.
为什么Android在暂停和恢复应用程序时没有应用程序级回调?如果不是在应用程序级别,它可以在任务(活动堆栈)级别在Android中实现吗?
后台Timertask定期刷新来自Web的数据的UI.当应用程序不再处于前台时,我想停止它.
目前我正在将重复代码放入BaseActivity.这是活动水平.任务在每次活动的每次暂停和恢复时停止和开始,应用程序转到bg或来到fg的事件隐藏在其中一个事件中,我无法知道.我想知道是否有更好的方法,我的意思是知道应用程序何时停止对用户可见.
我的应用程序是随机暂停(进入onPause方法)然后恢复(进入onResume方法),当我甚至没有触摸屏幕.在logcat中,没有指示导致暂停和恢复的原因.这只发生在Galaxy Tab 7"而不是Motorola Xoom或HTC Legend上.
如何确定暂停的原因?
我在Android上进行开发时遇到了这种有点奇怪的行为,在我的谷歌搜索中,我能找到的唯一答案是这是设计的,我不应该关心它.
我的应用程序在活动时获取位置数据,我打算通过在调用onPause事件时停止位置更新来实现保留电池的方法,并在调用onResume事件时稍后恢复提取.
在调试时,我注意到锁定手机时出现这种奇怪的行为,onPause-> onResume被一个接一个地调用三次或更多次,然后以onStop事件结束.我能找到的唯一答案就是:这就是android的工作方式,没关系.
我想我很好奇,有人可以解释我需要多次停止并恢复一个简单的子活动吗?这不会消耗更多的电池,特别是对于在onResume中有严重代码的大型活动吗?有没有办法防止这种情况发生?只要知道至少我在这些事件中的代码没有被调用,我会很高兴,可能使用if {}块来防止不必要的CPU周期.
非常感谢任何见解!
如何检测Android应用程序何时进入后台?onPause() 或 onUserLeaveHint() 有效,但也会在方向更改或呈现其他活动时调用。
我是Android开发的新手,我需要一些帮助来保存活动的状态.从onPause保存实例并从onRestore恢复实例的正确方法是什么,因为很明显Android并没有像onCreate或onSaveInstanceState那样发送savedInstanceState Bundle.或者除了使用savedInstanceState包之外还有更好的方法来保存吗?
这有意义吗?
[编辑]好吧,我想我知道我的真正问题是什么......但首先,我认为我所寻找的是使用SharedPreferences而不是savedInstanceState.
所以,做更多的调试日志观察我注意到,不是将Activity带到堆栈顶部而是创建一个新的.是的,我意识到我正在创造一个新的....
Intent itemintent = new Intent(MediaList.this, AudioPlayer.class);
Bundle b = new Bundle();
//...putString some strings to send
itemintent.putExtra("android.intent.extra.INTENT", b);
itemintent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(itemintent,0);
Run Code Online (Sandbox Code Playgroud)
...但FLAG_ACTIVITY_REORDER_TO_FRONT不应该阻止它创建新活动吗?我猜它认为它必须创建一个新的,因为我发送一些字符串?
更好的是,我怎样才能检查活动是否已经在堆栈中并切换到它,只要字符串是相同的? - 当用户从列表视图中单击媒体项时,我正在启动此活动.[/编辑]
我有个问题.初始化相机进行预览并将另一个应用程序聚焦后,然后返回我的应用程序:预览显示为黑色.如果我继续拍照,则会拍摄我正常指向相机的位置.
我在OnResume()覆盖上做错了吗?相关代码如下:
public void ReleaseCamera()
{
if (myCamera != null)
{
myCamera.Release();
myCamera = null;
}
}
protected override void OnPause()
{
base.OnPause();
if (myButtonState == ButtonState.CameraActive)
ReleaseCamera();
}
protected override void OnResume()
{
base.OnResume();
if (myButtonState == ButtonState.CameraActive)
InitializeCamera();
}
private void InitializeCamera()
{
SurfaceView mySurfaceView = FindViewById<SurfaceView>(Resource.Id.surfaceView1);
myCamera = Android.Hardware.Camera.Open(cameraNumber);
Android.Hardware.Camera.Parameters p = myCamera.GetParameters();
myCamera.SetDisplayOrientation(90); // Portrait
myCamera.SetPreviewDisplay(mySurfaceView.Holder);
myCamera.StartPreview();
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.:)
我正在寻找一种方法,在两个gradle任务的调用之间插入几秒的暂停.
我可以用
firstTask.doLast {
.....
}
Run Code Online (Sandbox Code Playgroud)
类似于Linux/Unix的东西
sleep 45
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?