我有关于Android system.I的功率管理有点误解知道,如果我保持激活锁定在我的应用程序,然后在我释放唤醒锁之前,移动设备不会睡眠。但是我有一个疑问,如果我从活动开始提供服务,那么我将启动后台线程服务。当按下电源键时,移动设备应该进入睡眠状态,为了省电,但是我发现线程仍然在后台运行,所以我有点误会,谁阻止了android系统的睡眠?当后台服务启动一个线程,该线程不能被系统停止,即使我按电源键
回答
Android系统犯规转到睡眠,因为它需要处理大量的事情一样,短信,电话,地点,报警等事件,如晃动,手势不能gotto一个“睡眠”模式。
当你按下电源按钮,只是关闭屏幕和移动到节电模式。休息一切都是一样的。
您的线程将被只要进程正在运行或运行它已经完成了完成其任务。
酷,我有点明白了,你可以给有关节电模式的一些细节?为什么android系统具有“唤醒概念”?难道CPU将处理线程运行,即使在移动进入省电模式?什么会醒来,如果从功率移动回储存模式?谢谢 – KrystalJake
顺便说一句,当CPU进入睡眠模式?并将继续处理我的后台线程? – KrystalJake
您应该在您的活动的onPause()方法中停止服务,然后在onResume()中重新启动它,也许如果满足某些条件(可以设置控制变量,例如ind_start_service并使用 if,以决定是否要启动此服务):
boolean ind_start_service = false;
@Override
public void onCreate(){
super.onCreate();
button_mainmenu_compass.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
startService(new Intent(this, YourService.class));
ind_start_service = true;
}
});
}
@Override
public void onResume(){
super.onResume();
if (ind_start_service){
startService(new Intent(this, YourService.class)); //it doesn't matter whether it's already started; it won't be duplicated
}
}
@Override
public void onPause(){
super.onPause();
stopService(new Intent(this, YourService.class));
}
或者 - 一般多 - 停止执行迭代一个线程(我认为这就是你的情况发生),你可以设置一个控制变量,可以在每次迭代时停止线程:
创建一个布尔变量(例如:active_activity),这将是只要真为特定活动是例如可见:其设置为true在的onResume()方法,和为false的onPause():
@Override public void onResume(){ super.onResume(); active_activity = true; } @Override public void onPause(){ super.onPause(); active_activity = false; }
在你的线程上,建立一个而循环将在每次迭代检查变量的值执行指令前:
new Thread(new Runnable() { public void run() { while (active_activity==true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //... instructions } } }).start();
我希望它的作品了你。
这里的代码有问题吗? –
- 1. 如何一次又一次启动和停止后台线程?
- 2. 启动停止的线程?
- 3. 申请未能及时启动,即使有后台线程
- 4. 当服务停止时,所有线程都会被终止吗?
- 5. 如何启动和停止后台线程iOS
- 6. 好吧,从其他后台线程启动后台线程? (NSObj)
- 7. 我可以等待一个特定的后台线程完成,然后另一个后台线程启动?
- 8. 一旦按钮不再被按下,我怎样才能停止线程?
- 9. 立即停止线程
- 10. 不能停止线程
- 11. 如何在服务器启动后执行后台线程?
- 12. 线程启动后服务器/客户端程序停止工作
- 13. 蟒蛇线程不会启动后台
- 14. UI线程上的任务延续,当从后台线程启动时
- 15. 如何停止黑莓后台线程
- 16. 如何杀死/停止后台线程?
- 17. 停止后台线程的iOS
- 18. 停止后台线程的CFRunLoop
- 19. 停止后台服务当应用程序转到后台
- 20. 如何启动不阻塞Java主线程的后台线程?
- 21. 启动后立即停止进程
- 22. Android打开应用程序后台服务后停止并启动新服务
- 23. 什么是实行“停止/取消”按钮来停止一个线程的好方法(即ins't后台工作)
- 24. 当另一个线程完成时停止线程。
- 25. 只停止一个线程
- 26. 停止一个DatagramSocket线程
- 27. 系统线程vs非系统线程
- 28. 线程不会停止使用按钮(多线程)
- 29. 当Asp.net终止后台线程?
- 30. 通过PendingIntent在后台线程中启动服务
换句话说,我真的想知道如何android系统或Linux系统控制移动或CPU进入节电模式或睡眠模式?这样我就可以建立一个socket长连接或后台线程,我送花儿给人认为当CPU或moible进入省电模式或睡眠模式,我的申请代码将不会被执行,直到它被唤醒。 – KrystalJake