在我的Activity中,我已经覆盖onDestory()并只是调用日志来显示是否正在调用此方法.(在Android 4.2.2和4.4.4上测试过)
@Override
protected void onDestroy() {
Log.i(TAG, "onDestroy() was called");
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
当我按下后退按钮时,会调用此方法(我看到了日志).
我相信除非手机内存不足或其他东西,否则不会发生这种情况.我在应用程序中没有太多东西,但MainActivity和一些片段.
当用户在MainActivity中并按下后退按钮时,这是日志:
I/MainActivity? onBackPressed() was called
I/MainActivity? onStop() was called
I/MainActivity? onDestroy() was called
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我也查isFinishing()的onPause(),它总是返回true
来自Javadoc:
在销毁活动之前执行任何最终清理.这可能是因为活动正在完成(有人称之为完成,或者因为系统暂时销毁此活动实例以节省空间.您可以使用isFinishing方法区分这两种情况.注意:不要指望这个方法被称为保存数据的地方!
我需要编写一个函数,它接受一个字符和一个字符串作为输入,然后将该字符与字符串中的每个元素进行比较.然后打印并最终返回字符出现在字符串中的次数.
这是我提出的代码,但它没有以正确的方式运行.如果有人能解释并纠正错误,我会很感激.
我想先写一个比较两个字符的函数来检查它们是否相等,如下所示:
def func1(x1, x2):
if x1 == x2:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
然后,我想我会选择另一个主要功能:
def func2():
ch1 = input("Enter one character. ")
str1 = str(input("Enter a string. "))
list_1 = list(str1)
a = 0
for 1 in list_1:
if func1(ch1, list_1):
a += 1
else:
a += 0
print(a)
return a
Run Code Online (Sandbox Code Playgroud)
这里有什么错误?如果我选择"a"作为我的角色,然后输入一个五个字母的字符串作为我的字符串,该函数仍然告诉我"a"只出现在字符串中一次.为什么这样,我该如何解决?