Android 活动文档中的一个片段(向下滚动到" 前景生命周期 "行)说:
活动可以频繁地进出前台 - 例如,
onPause()当设备进入睡眠状态或出现对话框时调用.
我不太明白这一点.在什么情况下会发生这种情况?被onPause()称为仅如果有问题的对话的上下文是从顶部其活性的对话框将显示不同?
通过文档中的上述引用,onPause()当下面代码中的AlertDialog(或只是Dialog)显示时,我的activity的方法是否会被调用?显示对话框时,我应该看到"onPause called"日志条目吗?
但我不认为会发生这种情况.它也不应该,如果我已正确理解Android生命周期!那么,文件指向的是什么呢?
public class LifeCycleTestActivity extends Activity {
private static final String TAG = "LifeCycleTest";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick");
AlertDialog dialog = new AlertDialog.Builder(LifeCycleTestActivity.this).create();
dialog.setMessage("You Clicked on the …Run Code Online (Sandbox Code Playgroud) 将ViewPager与片段一起使用时,在选项卡之间移动时不会调用onPause(),onResume()方法.当我们被显示或被隐藏时,我们是否有任何方法可以在片段中找到答案?
不幸的是我在onResume(),onPause()中有逻辑,比如注册位置服务,在切换标签时永远不会停止,因为onPause()永远不会被调用,直到退出整个应用程序.
谢谢
每次从屏幕关闭状态返回时,我的应用程序都会被杀死.我获取了我的应用程序所做的所有信息,但我无法找到它调用onDestroy的原因.这是我第一次在我的应用程序中看到这种行为.
我的主要活动扩展了tabActivity,因为它包含tabhost.我已经读过它必须扩展它或它将FC.我不确定我的问题是否与此有关?!哦,它实现了Observer,但这应该没问题.
这是日志:
07-21 09:57:53.247: VERBOSE/###(13180): onResume
07-21 09:57:53.267: VERBOSE/###(13180): onPause
07-21 09:57:59.967: VERBOSE/###(13180): onResume
07-21 09:58:00.597: VERBOSE/###(13180): onPause
07-21 09:58:00.597: VERBOSE/###(13180): onDestroy
07-21 09:58:00.637: VERBOSE/###(13180): onCreate
Run Code Online (Sandbox Code Playgroud)
疯狂的是,它在屏幕再次亮起后最多调用onDestroy,有时它有足够的时间在屏幕关闭之前执行此操作.但是在它再次发生之后它再次发生了同样的事情......
我希望有人给我一个提示或有关如何解决此问题的任何信息.
我不确定这是否重要,但我使用android 2.1-update1 sdk作为我的应用程序.
编辑:
该应用程序在真正的Android设备上进行测试.
这是一些基本代码,删除了所有不必要的行和信息:
package;
imports;
public class WebLabActivity extends TabActivity implements Observer{
#declerations
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("###", "onCreate");
setContentView(R.layout.main);
# initialize some basic things
}
@Override
public void onResume() {
super.onResume();
Log.v("###", "onResume");
}
@Override …Run Code Online (Sandbox Code Playgroud) 我开发了一个倒数计时器,我不知道如何在点击计时器的文本视图时暂停和恢复计时器.单击开始然后再次单击以暂停和继续,再次单击计时器的文本视图.
这是我的代码:
Timer = (TextView) this.findViewById(R.id.time); //TIMER
Timer.setOnClickListener(TimerClickListener);
counter = new MyCount(600000, 1000);
}//end of create
private OnClickListener TimerClickListener = new OnClickListener() {
public void onClick(View v) {
updateTimeTask();
}
private void updateTimeTask() {
if (decision == 0) {
counter.start();
decision = 1;
} else if (decision == 2) {
counter.onResume1();
decision = 1;
} else {
counter.onPause1();
decision = 2;
}//end if
}
;
};
class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}//MyCount …Run Code Online (Sandbox Code Playgroud) 我是Android开发的新手,我仍然无法理解活动中的方法onPause()和onStop()方法.
在我的应用程序中,我有一个静态类,我将其命名为Counter,它将变量的状态保存在应用程序的内存中.我的应用程序在模拟器中运行良好.我是想试验的不同行为onPause()对onStop().
因为onPause,我希望保留Counter类成员中存储的值,而调用onStop()我希望计数器值重置为零.所以我重写onStop()并将计数器类中的变量设置为零.但是,在模拟器中,我似乎无法使应用程序处于暂停状态.在模拟器中,我打开我的应用程序,运用它.然后我点击模拟器的主页按钮(而不是后退按钮),启动另一个应用程序,相信这会模仿onPause()活动.但是,模拟器似乎没有遵守这一点(我使用的是armeabi v7a模拟器),它似乎总是在调用,onStop()因为我的计数器值全部回到零,按照我的覆盖onStop().这是模拟器固有的,还是我做错了让我的活动进入暂停状态?
我的Android应用程序中有一个动画,它会闪烁TextView不同的颜色.我使用了TimerTask,Timer和Runnable方法来实现它.我需要做的是在用户在onPause()期间离开应用程序时停止线程,并在用户返回onResume()中的应用程序时恢复线程.以下是我实现的代码,但它不起作用(onPause()和onResume()件),我不明白为什么.我已经阅读了其他类似问题的其他帖子,但他们没有帮我弄清楚在我的情况下该怎么做.我已经读过TimerTasks已经过时了,我应该使用ExecutorService方法; 我不清楚如何实现这个功能.
...timerStep5 = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (b5) {
cashButton2SignalText.setBackgroundColor(Color.RED);
cashButton2SignalText.setTextColor(Color.WHITE);
b5=false;
} else {
cashButton2SignalText.setBackgroundColor(Color.WHITE);
cashButton2SignalText.setTextColor(Color.RED);
b5=true;
}
}
});
}
};
timer5.schedule(timerStep5,250,250);
}
public void onPause(){
super.onPause();
timerStep5.cancel();
}
public void onResume(){
super.onResume();
timerStep5.run();
}
Run Code Online (Sandbox Code Playgroud) 我有一个以编程方式注册的广播接收器.它响应了PACKAGE_REMOVED一个包被删除时触发的意图.
问题是,它没有得到这个消息.我认为这是因为当我离开活动并转移到另一个活动以卸载应用程序时,意图被触发,因此原始活动暂停.可能暂停活动(接收器未注册onPause)也会暂停接收器吗?
试图决定(对于我的应用程序)在onPause()中保存什么以及在onSaveInstanceState()中保存什么,我梳理了整个SO以获取提示和明确的指导.
如果我理解正确,onSaveInstanceState()最适合保存"运行时更改"或"当前状态"(无论这意味着什么),而onPause()最适合保存"持久状态"(无论这意味着什么).
我仍然难以确定我的申请中的内容构成"持久状态"与"当前状态".例如,虽然用户偏好显然是持久的,但是onPause()当用户更改它们时,Android UI框架总是自动保存它们时是否需要保存它们?
类数据成员是否需要保存在onSaveInstanceState()中?我是否需要为我的应用程序中的每个类执行此操作?
我很迷惑.
你能带来真实世界的例子,说明必须保存的内容onPause()和必须保存的内容onSaveInstanceState()吗?除了设备配置更改,即.
-
在我的问题得到解答后,一些新的见解:
android application-state activity-lifecycle onpause android-activity
我一直在尝试将应用程序级别暂停和恢复类似于活动的onPause和onResume.我知道没有具有此功能的API.
我试着关注这篇文章:http://curioustechizen.blogspot.com/2012/12/android-application-level-pause-and.html
但到目前为止我没有运气.
有没有人能够做到这一点?你使用了什么样的范例?
如果您需要我将一些代码粘贴到此问题中,请与我们联系.谢谢您的帮助
我正在开发一个增强现实应用程序,其中我有一个摄像头预览屏幕,我在其上绘制了一些相对于设备移动而移动的标记.
当我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)