请教关于Intent跳转的问题

LeavesOfCabbage 2012-08-10 10:50:13
现象如下:我有两个Activity,A和B。A是入口Activity,进入A后,一个Handler延时10秒发送一个空的消息,Handler接收到消息后,进行Intent跳转到B。在10秒的时间内,我点击了Home键。10S延时消息处理是在后台处理的,到了10S后,Handler接收到了消息进行Intent跳转了,打印Activity声明周期,发现A走了暂停,停止和摧毁方法,B并没有进入OnCreate,而是再次在主页点击应用图标的时候才进入OnCreate方法,程序后台运行期间,B没有执行任何生命周期中的方法。有人能解释下么,多谢。
...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeavesOfCabbage 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
不是代码的问题,anroid系统的设计,就是这样的。如果你在切换程序5s内,在启动你的ActivityB,是可以的。其余的不允许
[/Quote]

如果你在切换程序5s内,在启动你的ActivityB,是可以的。其余的不允许
这个没太明白啥意思,能给解释下么?多谢 5S内启动B是可以的,可以走OnCreate么?
hvk687 2012-08-10
  • 打赏
  • 举报
回复
不是代码的问题,anroid系统的设计,就是这样的。如果你在切换程序5s内,在启动你的ActivityB,是可以的。其余的不允许
LeavesOfCabbage 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
代码贴上来看看
[/Quote]

噢 引用自己了,代码已贴上,帮忙看下,多谢
LeavesOfCabbage 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
现象如下:我有两个Activity,A和B。A是入口Activity,进入A后,一个Handler延时10秒发送一个空的消息,Handler接收到消息后,进行Intent跳转到B。在10秒的时间内,我点击了Home键。10S延时消息处理是在后台处理的,到了10S后,Handler接收到了消息进行Intent跳转了,打印Activity声明周期,发现A走了暂停,停止和摧毁方法,B并没有进入OnCre……
[/Quote]
类A
public class ActivityA extends Activity
{

private String TAG = "ActivityA";

private Handler mHandler = new Handler() {

@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
Log.e(TAG, "Intent");
Intent intent = new Intent();
intent.setClass(ActivityA.this, ActivityB.class);
startActivity(intent);

ActivityA.this.finish();
}
};

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mHandler.sendEmptyMessageDelayed(0, 10000);
Log.e(TAG, "onCreate");
}

@Override
protected void onDestroy()
{
super.onDestroy();
Log.e(TAG, "onDestroy");
}

@Override
protected void onPause()
{
super.onPause();
Log.e(TAG, "onPause");
}

@Override
protected void onResume()
{
super.onResume();
Log.e(TAG, "onResume");
}

@Override
protected void onStop()
{
super.onStop();
Log.e(TAG, "onStop");
}
}

类B
public class ActivityB extends ActivityGroup
{

private final static String TAG = "ActivityB";

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mainb);

Log.e(TAG, "onCreate");
}

@Override
protected void onDestroy()
{
super.onDestroy();
Log.e(TAG, "onDestroy");
}

@Override
protected void onPause()
{
super.onPause();
Log.e(TAG, "onPause");
}

@Override
protected void onResume()
{
super.onResume();
Log.e(TAG, "onResume");
}

@Override
protected void onStop()
{
super.onStop();
Log.e(TAG, "onStop");
}

@Override
protected void onStart()
{
Log.e(TAG, "onStart");
super.onStart();
}

@Override
protected void onRestart()
{
Log.e(TAG, "onRestart");
super.onRestart();
}

}
  • 打赏
  • 举报
回复
代码贴上来看看
LeavesOfCabbage 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
不是代码的问题,anroid系统的设计,就是这样的。如果你在切换程序5s内,在启动你的ActivityB,是可以的。其余的不允许
[/Quote]

刚才测试了下,如果在跳转前5S内点击Home键,ActivityB会走正常生命周期方法,并且界面会自动弹出展示。如果跳转前5S之外点击Hone键,ActivityB只有在重新点击图标的时候才会走OnCreate方法,程序好像挂起在那了。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧