片段无法启动服务

Bil*_*ong 1 service android fragment android-fragments android-activity

我正在使用ViewPager编写应用程序,我正在使用Fragments.一切正常(就像我想的那样).

我在ViewPager中的一个片段有一个启动服务的按钮.

getActivity().startService(new Intent(getActivity(),Service.class)) 是Button的代码.

现在当我点击按钮时没有任何反应.还有其他解决方案吗?

如果您需要更多信息和代码,请与我们联系.

感谢帮助.

小智 8

1)在清晰的声明服务中:

<service android:name=".GameService" />
Run Code Online (Sandbox Code Playgroud)

2)NEXT WRITE CLASS WITCH EXTENDS SERVICE :(在我的例子中是Intent Serivce)

public class GameService extends IntentService
{
public GameService()
    {
        super("GameService");
    }

   @Override
    protected void onHandleIntent(Intent intent)
    {
       ..do some background work...
     }
}
Run Code Online (Sandbox Code Playgroud)

3)带有广播接收器的我的碎片和带有呼叫服务的代码:

public class Stats_Fragment extends Fragment
{
 BroadcastReceiver receiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            Bundle extras = intent.getExtras();

            if(extras!=null)
            {
               //for example: extras.getString("value");
             }
        }
     }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
   {
        View rootView = inflater.inflate(R.layout.fragment_stats, container, false);

        //CALLING SERIVCE (I call it here but you can call somewhere else...

         Intent intent = new Intent(getActivity(), GameService.class);
         intent.putExtra("Intent_Action", 3);
         intent.putExtra("playerID", MainClass.loggedUserID);
         getActivity().startService(intent);
    } 

    @Override
    public void onResume() {
        super.onResume();
        getActivity().registerReceiver(receiver, new IntentFilter(GameService.NOTIFICATION));
        CallStatsService();
    }

    @Override
    public void onPause()
    {
        super.onPause();
        getActivity().unregisterReceiver(receiver);
    }

 }
Run Code Online (Sandbox Code Playgroud)

我希望它会有所帮助:)