这是一段简化的代码:
static Activity longLivedField;
onCreate(...) {
longLivedField = this; // the only write to this field
}
Run Code Online (Sandbox Code Playgroud)
我见过人们声称这是一个上下文泄漏,并为它创建修复程序.典型的解决方法是在适当的位置使字段无效.例如,在onPause():
onPause() {
longLivedField = null;
}
Run Code Online (Sandbox Code Playgroud) 是否有日历应用程序允许用户设置事件结束提醒?假设我安排了两个小时的编程任务,我希望在整个过程中得到提醒 - 剩下15分钟,剩下5分钟,时间到了,30分钟等等.
此外,如果应用程序支持语音识别会更好.例如,我可以说"上午9点,我将编写2个小时的Java程序.当我的时间不足时提醒我",应用程序将知道要添加的条目.
我-l在使用时放置选项有些麻烦gcc.这是一个用于重现问题的精简版本.
TC:
#include <pthread.h>
int main() {
pthread_create(0, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
在终端:
$ gcc -lpthread t.c
/tmp/ccmkwV7B.o: In function `main':
t.c:(.text+0x29): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
$ gcc t.c -lpthread
$ (compiles ok)
Run Code Online (Sandbox Code Playgroud)
为什么我必须-lpthread最终使它工作?而且似乎这个问题只发生在32位linux上.
我的环境信息附在下面:
gcc -lpthread t.c此机器出现故障.
$ gcc --version
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
$ uname -rm
3.0.0-12-generic i686
Run Code Online (Sandbox Code Playgroud)
gcc -lpthread t.c 适用于这台机器.
$ uname -rm
2.6.18-274.3.1.el5 x86_64
$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red …Run Code Online (Sandbox Code Playgroud) 是否有可能调用 onPause(),然后立即调用 onResume()?换句话说,在调用 onPause() 之后,活动是否总是必须经过 onStop()、onStart() 和 onResume()?
活动生命周期文档说这是可能的,但是触发它的用户操作是什么?任何人都可以创建一个活动 JUnit 测试来证明这一点吗?
是否可以在应用程序级别?或者我们必须在操作系统内执行此操作吗?
人们可能希望这样做以减少攻击面.理想情况下,应用程序几乎在任何时候都应该只在需要时才具有权限,遵循"最小权限原则".
澄清:通过"改变",我的意思是暂时放弃某些权限,并在以后真正需要时重新获得它们.
对于2.1以后的Android版本,是onCreate()调用旋转吗?我在onCreate()中放了一个日志打印,但它不打印2.3.3和4.0.3.
这是代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Runtime runtime = Runtime.getRuntime();
long free = runtime.freeMemory();
long total = runtime.totalMemory();
long occupied = total - free;
Log.i("MEM", "heap: " + occupied);
}
Run Code Online (Sandbox Code Playgroud)
在2.1上,日志消息由于方向而多次打印; 在2.3.3上,它只打印一次.