我知道这个问题已被问了一百万次,我自己虽然我已经知道了答案,而且正确的一个是唯一有保证的电话是onPause(),所以你应该把数据保存在那里.
但是,在android文档的许多地方,他们总是建议不要在onPause()方法中做繁重的工作(比如在数据库中写数据),因为它会延迟活动之间的转换.
onPause():此方法通常用于向持久数据提交未保存的更改,停止动画以及可能消耗CPU的其他内容,等等.它应该尽快做任何事情,因为下一个活动在返回之前不会恢复.
Killable:是的
然后根据类似表中的Android Developer Reference Guide.
它说同样的事情但是:
Killable:Pre-HONEYCOMB
并且他们添加了一个说明:
请注意,这些语义在针对从HONEYCOMB开始的平台的应用程序与针对先前平台的平台之间会略有不同.从Honeycomb开始,应用程序在其onStop()返回之前不处于killable状态.这可能会在调用onSaveInstanceState(Bundle)时产生影响(可以在onPause()之后安全地调用它,并允许和应用程序安全地等到onStop()以保存持久状态.
Killable
请注意上表中的"Killable"列 - 对于那些被标记为可填充的方法,在该方法返回之后,托管该活动的进程可能在任何时候被系统杀死而不执行其代码的另一行.
对于POST-HONEYCOMB(我不关心早期版本): 那么,可以假设任何Android设备(包括不同的ROMS)将确保在活动上调用onStop吗?这是任何耗费存储写入应用程序的最佳位置?
注意:这是非常令人困惑的,因为这里的大多数答案,网站,书籍,甚至在线Android测试都是正确的答案,你应该将它保存在onPause而不是onStop.
所以我的应用程序中有一个autocompletetextview字段,我希望用户输入他的电子邮件地址.现在,为了帮助他更快地输入它并且不犯错误,我想在输入时向他推荐最常见的电子邮件域服务器.
我正在使用该控件与此数组
String[] arraymails ={"@gmail.com","@hotmail.com","@yahoo.com","@outlook.com"};
Run Code Online (Sandbox Code Playgroud)
这在oncreate中
mEmailView = (AutoCompleteTextView) findViewById(R.id.register_email);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arraymails);
mEmailView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
这个想法是,当用户键入"@"字符然后"g"时,它会建议@ gmail.com.
如果我直接在文本框中输入"@g .."但是如果我之前输入任何内容,例如"john @ gm",它将无法正常工作.
是否有任何通配符,如"*@gmail.com"这样做?或者我该如何实施呢?
谢谢
android ×2