Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

18.8. 在 Fragment 中启动 Service

		
package cn.netkiller.ui;

public class StoryFullscreenFragment extends Fragment {
    private static final String TAG = StoryFullscreenFragment.class.getSimpleName();

    private Intent messageQueueService;
    private MainBroadcastReceiver mainBroadcastReceiver;
    private FragmentStoryFullscreenBinding binding;

    public StoryFullscreenFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
        fullscreen(requireActivity().getWindow());
        messageQueueService = new Intent(getActivity(), MessageQueueService.class);
    }

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        binding = FragmentStoryFullscreenBinding.inflate(inflater, container, false);

        requireActivity().startService(messageQueueService);

        mainBroadcastReceiver = new MainBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("main.mqtt");
        intentFilter.addAction("main.story");
        intentFilter.addAction("main.progress");
        intentFilter.addAction("keyboard.event");
        intentFilter.addAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
        requireActivity().getApplicationContext().registerReceiver(mainBroadcastReceiver, intentFilter);

        return binding.getRoot();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        requireActivity().getApplicationContext().unregisterReceiver(mainBroadcastReceiver);
        requireActivity().stopService(messageQueueService);
    }

}