在android中创建一个空服务是个好主意吗?

时间:2016-04-07 09:12:23

标签: android android-fragments service android-service

我想创建一个空服务,只要某个片段打开就会在后台运行 - 该服务将在后台填充一个数组,但不会在当前(调用片段)中使用:

创建服务的代码:

        Intent intent = new Intent();
        intent.putExtra(ServiceActions.class.getName(), ServiceActions.GET_LIST_FROM_API);
        intent.putExtra("api_code_id", "12345");
        managerProvider.getRequestManager().startRetrievalService(intent);

注册&取消注册侦听器:

manager.registerReceiver(backgroundListReceiver , new IntentFilter(ServiceBroadcasts.GET_LIST_FROM_API_RESULT.name()));
manager.unregisterReceiver(backgroundListReceiver );

然后处理接收器:

        backgroundListReceiver = new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        boolean result = extras.getBoolean(ServiceBroadcasts.GET_LIST_FROM_API_RESULT.name());
                        // DO Nothing here as the list is loading in the background
                        // and stored in the application class
                    }
                };

我在片段中注册并取消注册,我想我问这是正确的方法吗?还是有另一个更好的过程?这样做的原因是用户选择列表的可能性非常高,所以我试图在他们选择列表之前预先加载列表。 用于处理后台加载列表的代码:

    private void getListInBackground() {
    RequestResponse response = RestAPI.getListInBackground();
    if (response.isSuccessful()) {
        mApp.setBackgroundList(JacksonMapper.deserBackgroundList(response.getResponseString()));
    }
    Intent broadcast = new Intent(ServiceBroadcasts.GET_LIST_FROM_API_RESULT.name());
    broadcast.putExtra(ServiceBroadcasts.GET_LIST_FROM_API_RESULT.name(), response.isSuccessful());
    mManager.sendBroadcast(broadcast);
}

0 个答案:

没有答案