package com.roboo.qiushibaike.fragment; import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.GridView; import com.roboo.qiushibaike.CSDNActivity; import com.roboo.qiushibaike.CYDBActivity; import com.roboo.qiushibaike.KJFMActivity; import com.roboo.qiushibaike.MainActivity; import com.roboo.qiushibaike.MyIntentService; import com.roboo.qiushibaike.MyService; import com.roboo.qiushibaike.R; import com.roboo.qiushibaike.adapter.GridViewAdapter; public class HomeFragment extends Fragment implements View.OnClickListener { private GridView mGridView; private GridViewAdapter mAdapter; private Button mBtnStartService; private Button mBtnStopService; private Button mBtnBindService; private Button mBtnUnbindService; private Button mBtnRebindService; private Intent mServiceIntent ; private Button mBtnFrontService; private Button mBtnANRService; private Button mBtnNoANRService; private boolean isBind = false; private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { System.out.println("服务断开连接"); } @Override public void onServiceConnected(ComponentName name, IBinder service) { System.out.println("服务连接"); isBind = true; } }; public static HomeFragment newInstance() { HomeFragment homeFragment = new HomeFragment(); return homeFragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, null); mGridView = (GridView) view.findViewById(R.id.gv_gridview); mBtnBindService = (Button) view.findViewById(R.id.btn_bind_service); mBtnRebindService = (Button) view.findViewById(R.id.btn_rebind_service); mBtnStartService = (Button) view.findViewById(R.id.btn_start_service); mBtnStopService = (Button) view.findViewById(R.id.btn_stop_service); mBtnUnbindService = (Button) view.findViewById(R.id.btn_unbind_service); mBtnFrontService = (Button) view.findViewById(R.id.btn_front_service); mBtnANRService = (Button) view.findViewById(R.id.btn_anr_service); mBtnNoANRService = (Button) view.findViewById(R.id.btn_no_anr_service); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new GridViewAdapter(getActivity()); mServiceIntent = new Intent(getActivity(), MyService.class); mGridView.setAdapter(mAdapter); mBtnBindService.setOnClickListener(this); mBtnRebindService.setOnClickListener(this); mBtnStartService.setOnClickListener(this); mBtnStopService.setOnClickListener(this); mBtnUnbindService.setOnClickListener(this); mBtnFrontService.setOnClickListener(this); mBtnANRService.setOnClickListener(this); mBtnNoANRService.setOnClickListener(this); mGridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = null; switch (position) { case 0://糗事百科 intent = new Intent(getActivity(),MainActivity.class); break; case 1://穿衣打扮 intent =new Intent(getActivity(),CYDBActivity.class); break; case 2://csdn intent = new Intent(getActivity(),CSDNActivity.class); break; case 3://科技锋芒 intent = new Intent(getActivity(),KJFMActivity.class); break; default: break; } startActivity(intent); } }); } @Override public void onClick(View v) { mServiceIntent.putExtra("front", false); mServiceIntent.putExtra("anr", false); switch (v.getId()) { case R.id.btn_start_service://开启服务 startService(); break; case R.id.btn_stop_service://停止服务 stopService(); break; case R.id.btn_bind_service://绑定服务 bindService(); break; case R.id.btn_unbind_service://解除绑定 unbindService(); break; case R.id.btn_rebind_service://重新绑定服务 rebindService(); break; case R.id.btn_front_service://前台服务 frontService(); break; case R.id.btn_anr_service://在继承Service的服务中进行耗时操作 anrService(); break; case R.id.btn_no_anr_service://在继承IntentService的服务中进行耗时操作 noAnrService(); default: break; } } private void anrService() { mServiceIntent.putExtra("anr", true); getActivity().startService(mServiceIntent); } private void noAnrService() { Intent intent = new Intent(getActivity(),MyIntentService.class); getActivity().startService(intent); } private void frontService() { mServiceIntent.putExtra("front", true); getActivity().startService(mServiceIntent); } private void rebindService() { } private void unbindService() { isBind = false; getActivity().unbindService(conn); } /**要想绑定服务起作用,onBind方法中的返回值不能为空*/ private void bindService() { getActivity().bindService(mServiceIntent, conn, Service.BIND_AUTO_CREATE); } private void stopService() { getActivity().stopService(mServiceIntent); } private void startService() { getActivity().startService(mServiceIntent); } @Override public void onPause() { getActivity().stopService(mServiceIntent); if(isBind) { getActivity().unbindService(conn); } super.onPause(); } }