android服务和活动生命周期?

戈尔吉93

我的android IntentService出现问题。当我第一次打开应用程序时,该服务会从配置文件活动中按意图启动,并且将从该服务中获取数据。如果我切换到其他活动,然后返回服务仍在运行,那就可以了。

但是,如果按回去,以便活动结束并置于后台,则该服务仍在工作,因为该应用程序在后台,但是如果我将其返回到前台,则该服务将停止。我不知道为什么。波纹管是我的代码,请帮忙。

我已经阅读了几次活动生命周期,但仍然不明白为什么会这样。

奇怪的是,当MainActivity返回运行状态时,Service在停止之前再接收数据一次。服务没有崩溃。

服务

public class SomeService extends IntentService
{
    public static final String extra = "someData";

    public SomeService()
    {
        super(SomeService.class.getSimpleName());
    }

    @Override
    protected void onHandleIntent(Intent intent)
    {
        Log.e("SomeService", "starting service");

        while (true)
        {
            SomeData data = Api.getNewSocketData();

            //Broadcast data when received to update the view
            Intent broadcastData = new Intent();
            broadcastData.setAction(dataBroadcastReceiver.ACTION_DATA_RECEIVED);
            broadcastData.addCategory(Intent.CATEGORY_DEFAULT);
            broadcastData.putExtra(extra, " ");
            sendBroadcast(broadcastData);

            Log.e("SomeService", "received from socket");
        }

    }


}

接收者

public class dataBroadcastReceiver extends BroadcastReceiver
{
    public final static String ACTION_DATA_RECEIVED = "net.bitstamp.intent.action.ACTION_SOMEDATA_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent)
    {

        Log.e("receiver", "data received");
    }
}

主要活动

@Override
public void onPause()
{
    super.onPause();

    unregisterReceiver(dataBroadcastReceiver);
}

@Override
public void onResume()
{
    super.onResume();

    IntentFilter intentFilter = new IntentFilter(dataBroadcastReceiver.ACTION_DATA_RECEIVED);
    intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
    dataBroadcastReceiver = new dataBroadcastReceiver();
    registerReceiver(dataBroadcastReceiver, intentFilter);

    Intent someService = new Intent(this, SomeService.class);
    startService(someService);

}

我真的需要帮助。谢谢

拉里·石板

您不想IntentService无限循环。它将阻止所有其他传入请求。从文档中:

所有请求都在单个工作线程上处理-它们可能花费必要的时间(并且不会阻塞应用程序的主循环),但是一次仅处理一个请求。

您的Service可能仍会愉快地运行,它只是不处理新的请求,因为您的旧请求仍在无限循环中进行处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

finish()和android活动生命周期

来自分类Dev

活动生命周期Android

来自分类Dev

活动和服务的生命周期

来自分类Dev

通过服务改变活动的生命周期?

来自分类Dev

了解活动和服务的生命周期

来自分类Dev

服务和Android应用程序生命周期

来自分类Dev

活动生命周期和类属性

来自分类Dev

LocalBroadcastManager和活动生命周期

来自分类Dev

活动生命周期和类属性

来自分类Dev

最近屏幕和活动生命周期

来自分类Dev

活动崩溃生命周期方法-Android

来自分类Dev

Android 4.0 + /活动生命周期

来自分类Dev

Android服务生命周期

来自分类Dev

Android生命周期和主页按钮

来自分类Dev

Android - 通知和生命周期

来自分类Dev

应用程序实例的生命周期(关于服务和活动)

来自分类Dev

如果多窗口生命周期会影响android N中的活动生命周期?

来自分类Dev

Android应用程序生命周期方法有哪些?(不是活动生命周期方法。)

来自分类Dev

Android应用程序生命周期方法有哪些?(不是活动生命周期方法。)

来自分类Dev

Android项目生命周期-活动生命周期之前(Activity.onCreate())

来自分类Dev

活动生命周期混乱

来自分类Dev

使服务生命周期独立于活动

来自分类Dev

处理活动和服务生命周期

来自分类Dev

活动生命周期图中的矛盾与生命周期的描述

来自分类Dev

未触发注册Android活动生命周期

来自分类Dev

Android Studio-活动生命周期(续)

来自分类Dev

finish()在Android活动生命周期中的正确作用

来自分类Dev

功能调用之间混淆的Android活动生命周期

来自分类Dev

跟踪排行榜活动生命周期(Android)