0

我有一个向我的数据库发送一些详细信息的活动,但是当我单击后退按钮时它会停止。是否可以让它在后台运行?我听说使用服务可以解决这个问题,但由于我所有的课程都写成活动,我想知道它是否可能。不能用 onStop 方法上的一些代码来完成吗?

4

4 回答 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 回答