相关疑难解决方法(0)

如何区分是否将onDestroy()作为配置更改序列的一部分进行调用?

在我的Activity中,需要在onDestroy()中销毁一些外部事物(服务).但是当配置发生变化时(例如键盘翻转),我不希望这样,因为它会立即恢复.

所以问题是:如何区分onDestroy()是否是由Back-key press或部分配置更改过程引起的?

在@ CommonsWare的回答之后它会很简单)类似于:

@Override 
onDestroy() { 
  if (mIsChangeConfig == true) { 
    mIsChangeConfig = false: 
  } else { 
    stopService(); 
  } 
} 

@Override 
onRetainNonConfigurationInstance() { 
  mIsChangeConfig = true; 
}
Run Code Online (Sandbox Code Playgroud)

android ondestroy android-activity

18
推荐指数
2
解决办法
5289
查看次数

由于方向已更改或应用正在关闭,活动是否被销毁?

我有一个启动AsyncTaskActivity.允许活动以纵向或横向显示.更改方向时,将销毁并重新创建活动.无论方向改变多少次,任务都会继续工作.它还将结果成功返回给活动(根据CommonsWare的答案http://goo.gl/WF1yW).

我想要实现的是:当活动因应用程序关闭而被销毁 - 应该取消任务.但是,当活动因方向更改而被销毁时- 不应取消任务.

基本上问题是如何区分这两种情况:应用是关闭/方向改变.在这两种情况下都会调用onDestroy()方法,并且没有简单的方法可以检查isChangingOrientation()...

PS如果有必要,我也可以考虑采用完全不同的方法.

android android-asynctask android-activity

14
推荐指数
3
解决办法
5505
查看次数

屏幕旋转时标签更改[Android]

嗨,我有4个标签的Android APP(让我们说tab1,tab2,tab3,tab4).当活动开始时,默认选项卡是tab1.我切换到任何其他选项卡(tab2,3或4)并更改屏幕方向,它总是重置为默认选项卡(tab1).

我尝试使用以下代码:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);
    createView();
}
Run Code Online (Sandbox Code Playgroud)

在createView()里面我有:

private void createView()
{
... // Tabs are created before
tabHost.getTabWidget().setCurrentTab(CurrentTab);
}
Run Code Online (Sandbox Code Playgroud)

CurentTab 是private int并且默认设置为0,但它在TabChange上设置:

public void onTabChanged(String tabId) {
    ... some code
    CurrentTab = tabHost.getCurrentTab();
}
Run Code Online (Sandbox Code Playgroud)

我在这里堆积......有没有其他方法可以解决这个问题?

简而言之: 我希望Tab在屏幕旋转时不会更改为默认值...

tabs android rotation screen-rotation

2
推荐指数
1
解决办法
5062
查看次数