我有一个向我的数据库发送一些详细信息的活动,但是当我单击后退按钮时它会停止。是否可以让它在后台运行?我听说使用服务可以解决这个问题,但由于我所有的课程都写成活动,我想知道它是否可能。不能用 onStop 方法上的一些代码来完成吗?
问问题
86 次
4 回答
2
嘿,
创建一个扩展服务的新类。添加必要的覆盖。
@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));
希望这可以帮助 :)
于 2013-01-02T22:25:41.847 回答
1
您提到您的所有类都编写为活动,我假设这意味着您将应用程序逻辑嵌入到用户界面逻辑中。这通常不是一个好的做法——您应该尝试将特定于应用程序的代码迁移到单独的类。通过在您的用户界面之外拥有此功能,您的应用程序将在许多方面受益。
要回答您的问题,可以通过子类化让您的应用程序在后台执行功能Service
。在这里查看一个很好的解释。
于 2013-01-02T22:23:42.047 回答
1
您必须重写 onBackPressed 方法才能执行您想要的操作。如果您想“隐藏”活动(以便用户看到它“关闭”),您可以调用moveTaskToBack方法。
于 2013-01-02T22:26:00.863 回答
0
您应该编写一个 Activity 使用意图与之通信的服务。因此,它应该将数据发送到服务以将其发送到数据库,然后服务可以通知活动。当 Activity 监听来自 Service 的事件时,您正在实现观察者模式(Java 和 Android 中的监听器以及许多其他事件处理系统)。
您也可以轮询服务,但这不是获取状态更新的首选模式。
于 2013-01-02T22:24:05.093 回答