我有一个活动将一些细节发送到我的数据库,但是当我点击后退按钮时它会停止。 是否有可能让它在后台运行?我听说使用服务可以解决这个问题,但是因为我所有的类都是活动,所以我想知道它是否可行。 用onStop方法的某些代码无法完成这项工作吗?在后台运行一个活动
回答
你提到所有的类都写成活动,我假设你的应用程序逻辑嵌入了你的用户界面逻辑。这通常不是一个好的做法 - 您应该尝试将特定于应用程序的代码迁移到单独的类。通过在用户界面之外使用此功能,您的应用程序将以多种方式受益。
要回答你的问题,可以让你的应用程序通过子类Service
在后台执行功能。看一看here是一个很好的解释。
您应该使用意图编写活动与之通信的服务。因此它应该将数据发送到服务以便发送到数据库,然后服务可以通知活动。当活动监听来自服务的事件时,您正在实现Observer模式(Java和Android中的监听器以及许多其他事件处理系统)。
您也可以轮询服务,但这不是获取状态更新的首选模式。
Heey,
创建一个扩展Service的新类。 添加必要的覆盖。
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
//this service will run until we stop it
// This will execute when the service starts
return START_STICKY; //makes it sticky to keep it on until its destroyd
}
@Override
public void onDestroy()
{
super.onDestroy();
// when the service is destroyd
}
可以启动与服务:
stopService(new Intent(getBaseContext(), ServiceClassName.class));
您可以停止服务:
stopService(new Intent(getBaseContext(), ServiceClassName.class));
希望这有助于:)
你将不得不重写onBackPressed方法来做你想做的事情。如果你想“隐藏”活动(所以用户看到它“关闭”),你可以调用moveTaskToBack方法。
“moveTaskToBack”后应用程序会继续运行吗? –
您应该测试用于db写入的“背景”代码。至少它会隐藏它之前保存状态。 – DNax
我应该使用super.onBackPressed()吗?我认为没有,因为这是杀死我的应用程序,我猜对的方法? –
- 1. 在后台运行活动
- 2. 在后台运行活动
- 3. 在后台按下后在后台运行的活动
- 4. 如何让活动在后台运行?
- 5. 保持活动在后台运行
- 6. 关闭在后台运行的活动
- 7. 如何在后台运行活动?
- 8. 制作活动在后台运行
- 9. 显示在后台运行的活动
- 10. 在后台运行android活动
- 11. 运行一个后台进程,应该在从一个活动移动到另一个时继续运行
- 12. Android:从后台运行活动
- 13. 如何在主要活动在后台运行时启动活动?
- 14. Android BroadcastReceiver启动时 - 活动在后台时保持运行
- 15. 在后台运行一个php脚本
- 16. 在后台运行一个gui程序
- 17. 一个程序,在后台运行(JAVA)
- 18. 在onReceive调用课堂活动以在后台运行
- 19. 在google appengine后台运行只有一个后台线程
- 20. Android - 正在运行后台任务并处理活动重启
- 21. android:在后台运行服务和活动之间的通信
- 22. 发送数据到在后台运行的活动
- 23. 如何使活动始终在后台运行
- 24. 隐藏Android语音识别活动在后台运行?
- 25. 如何在Android中的后台运行活动
- 26. 在Android中的后台计时器上运行活动
- 27. 运行在后台
- 28. 运行在后台
- 29. 在后台运行
- 30. 如何阻止后台活动运行时提醒对话框在运行android
不,onStop应该很快,所以你不能在那里继续处理。如果你有长时间运行的进程,你应该把它们放在后台,但是你也应该只对用户交互进程使用活动。迁移到“服务”并不困难,值得付出努力。 – 323go
您正在寻找服务。看看这个教程http://www.vogella.com/articles/AndroidServices/article.html –
让我们假设我的应用程序是某种计时器..我想在后台运行它,但当用户重新打开它应该看到它是一种活动......我该如何分解它?服务是什么以及活动是什么? –