我有一个活动将一些细节发送到我的数据库,但是当我点击后退按钮时,它会停止。 是否有可能让它在后台运行?我听说使用服务可以解决这个问题,但由于我的所有课程都被称为活动我想知道是否可能。 使用onStop方法的某些代码无法完成?
答案 0 :(得分:2)
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));
希望这会有所帮助:)
答案 1 :(得分:1)
您提到所有类都是作为活动编写的,我假设这意味着您的应用程序逻辑嵌入了用户界面逻辑。这通常不是一个好习惯 - 您应该尝试将特定于应用程序的代码迁移到单独的类中。通过在用户界面之外使用此功能,您的应用程序将以多种方式受益。
要回答您的问题,可以让您的应用程序通过继承Service
在后台执行功能。看看here以获得一个很好的解释。
答案 2 :(得分:1)
您必须覆盖onBackPressed方法才能执行所需操作。如果您想“隐藏”活动(以便用户看到它“关闭”),您可以调用moveTaskToBack方法。
答案 3 :(得分:0)
您应该使用意图编写活动与之通信的服务。因此,它应该将数据发送到服务以便它发送到数据库,然后服务可以通知活动。当Activity从服务中侦听事件时,您正在实现Observer模式(Java和Android中的监听器以及许多其他事件处理系统)。
您也可以轮询该服务,但这不是获取状态更新的首选模式。