额,你可以在activity里面写个音乐播放器,然后启动一个thread去播放他,然后把activity关闭了试试,看它会不会播放
解决方案 »
- 纠结很久的在底部显示一个加载进度的view,gridview则做不到
- 请问如何添加开机声音
- Android opengl,当重启Activity时,纹理丢失的问题
- webkit编译错误,在线等求助!
- 我有两个按钮,用来切换两个不同的页面
- 关于adb push文件到指定用户
- 关于百度地图应用 实时更新位置图层
- 主线程和网络线程之间用handler传递数据时,handler空指针错误。已经快疯掉了。。。。
- Adobe AIR技术,这个需求可以实现不?
- 大家觉得环信即时通讯的sdk真的好用吗?
- 手机与电脑通讯的问题
- 做个公交查询软件,但WebView为什么打不开百度地图,各位大牛帮帮小弟,setJavaScriptEnabled(true)也写了。从别的浏览器可以正常访问。
一个主要的例子就是从列表中播放音乐的媒体播放器。播放器程序可能会有一个或几个活动,这些活动可以让用户选择希望播放的音乐然后显示播放。但是音乐播放过程本身不会使用一个活动,因为用户希望在切出播放器界面做别的事情时音乐也能一直放下去。为了保持播放继续,播放器的活动可以启动一个在后台运行的service。然后即使启动这个service的活动退出,音乐播放服务也能继续运行。
你可以连接(connect)或者绑定(bind)到一个正在运行的service(如果这个服务还没运行的话就启动它)。当连接到service后,你可以通过service暴露出来的接口和这个service进行通信,对音乐播放服务来说,这个接口可能允许用户暂停,后退,停止,重新播放等操作。
service 运行在这个应用程序进程的主线程中。因此为了不阻塞其他的组件或者用户界面,service经常为那些耗时长的任务单独开一个线程(比如音乐播放)。
你看一下
1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
2. service可以作为独立进程运行,UI层可以进行IPC与service交互,比如获取GPS坐标信息。
3. service可以长期在后台运行,比如获取推送广告,最新新闻 并通知给UI层,你的app关闭后 仍然能收到推送的消息。
from 官网
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MusicFramgent fragment = new MusicFramgent();
fragmentTransaction.add(R.id.tab_content, fragment);
fragmentTransaction.commit();package com.example.helloworld;import java.io.File;import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class MusicFramgent extends Fragment
{
//三个一般必须重载的方法
@Override
public void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
System.out.println("ExampleFragment--onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
System.out.println("ExampleFragment--onCreateView");
ShowMusicFile();
return inflater.inflate(R.layout.music_layout, container, false);
}
@Override
public void onPause()
{
// TODO Auto-generated method stub
super.onPause();
System.out.println("ExampleFragment--onPause");
}
@Override
public void onResume()
{
// TODO Auto-generated method stub
super.onResume();
System.out.println("ExampleFragment--onResume");
}
@Override
public void onStop()
{
// TODO Auto-generated method stub
super.onStop();
System.out.println("ExampleFragment--onStop");
}
public void ShowMusicFile()
{
File path = null;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) )
{
path = Environment.getExternalStorageDirectory();
}
else
{
Toast.makeText(getActivity(),"没有SD卡",Toast.LENGTH_LONG).show();
}
GetAllFiles(path);
}
private void GetAllFiles(File root)
{
File files[] = root.listFiles();
if(files != null)
{
for (File f : files)
{
if(f.isDirectory())
{
GetAllFiles(f);
}
else
{
System.out.println(f);
}
}
}
}
}