我想从列表视图项的片段开始服务。我试图用以下方式呼叫服务:
startService(new Intent(getActivity(),myPlayService.class));
但它根本不起作用。我如何从片段中调用我的服务?还有其他方法可以开始服务吗?
答案 0 :(得分:95)
替换
startService(new Intent(getActivity(),myPlayService.class));
与
getActivity().startService(new Intent(getActivity(),myPlayService.class));
答案 1 :(得分:0)
从片段使用启动服务
Java
public bool Start()
{
if (!Running)
{
Handle = IntPtr.Zero;
var readyEvent = new ManualResetEventSlim();
// Launch the message loop thread
taskFactory.StartNew(() =>
{
var processHandle = Process.GetCurrentProcess().Handle;
var windowClass = new WndClassEx
{
lpszMenuName = null,
hInstance = processHandle,
cbSize = WndClassEx.Size,
lpfnWndProc = WndProc,
lpszClassName = Guid.NewGuid().ToString()
};
// Register the dummy window class
var classAtom = RegisterClassEx(ref windowClass);
// Check whether the class was registered successfully
if (classAtom != 0u)
{
// Create the dummy window
Handle = CreateWindowEx(0x08000000, classAtom, "", 0, -1, -1, -1, -1, IntPtr.Zero, IntPtr.Zero, processHandle, IntPtr.Zero);
Running = Handle != IntPtr.Zero;
}
readyEvent.Set();
if (Handle != IntPtr.Zero)
{
Message message;
while (GetMessage(out message, IntPtr.Zero, 0, 0) != 0)
{
TranslateMessage(ref message);
DispatchMessage(ref message);
}
// if the message queue received WM_QUIT other than
// from the window being destroyed, for instance by
// a corresponding Stop() method posting WM_QUIT
// to the window, then destroy the window now...
if (IsWindow(Handle))
{
DestroyWindow(Handle);
}
Handle = IntPtr.Zero;
}
});
readyEvent.Wait();
}
return Running;
}
科特林
requireActivity().startService(new Intent(getContext(), ServiceName.class));