片段无法启动服务

时间:2014-09-16 08:58:02

标签: android android-activity android-fragments service fragment

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

ViewPager中的一个片段有一个启动服务的按钮。

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

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

<service android:name=".GameService" />

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...
     }
}
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);
    }

 }

我希望它会有所帮助:)

答案 1 :(得分:1)

这几乎总是与不将服务注册到清单有关。一直发生在我身上。刚刚放 <service android:name="your.package.name.YourService"/&GT; 进入你的清单。