<service android:name=".mService1" android:exported="true" android:process=":remote" ></service>
/* 自定义mService类继承Service类 */
public class mService1 extends Service
{
/* 建立Handler对象,作为线程传递 postDelayed之用 */
private Handler objHandler = new Handler();
/* 为确认系统服务执行情况 */
private int intCounter=0;
/* 成员变量mTasks为Runnable对象,作为Timer之用 */
private Runnable mTasks = new Runnable()
{
/* 执行线程 */
public void run()
{
/* 递增counter整数,作为后台服务运行时间识别 */
intCounter++;
/* 以Log对象LogCat里输出log信息,监看服务执行情况 */
Log.i("HIPPO", "Counter:"+Integer.toString(intCounter));
/* 每1秒调用Handler.postDelayed方法反复执行 */
objHandler.postDelayed(mTasks, 1000);
}
};
@Override
public void onStart(Intent intent, int startId)
{
// TODO Auto-generated method stub
super.onStart(intent, startId);
}
@Override
public void onCreate()
{
// TODO Auto-generated method stub
/* 服务开始,调用每1秒mTasks线程 */
objHandler.postDelayed(mTasks, 1000);
super.onCreate();
}
@Override
public void onDestroy()
{
// TODO Auto-generated method stub
/* 当服务结束,移除mTasks线程 */
objHandler.removeCallbacks(mTasks);
super.onDestroy();
}
}
Intent i = new Intent( EX06_04.this, mService1.class );
startService(i);
来启动一个 服务, 注意:此 Service 要在
AndroidManifest.xml 中声明,如下:
<service android:name=".mService1" android:exported="true" android:process=":remote" ></service>
#ifndef __OPTIMIZE__ # define NSLog(…) NSLog(__VA_ARGS__) #else # define NSLog(…) {} #endif
这个代码的魔术在于:release模式通常会定义 __OPTIMIZE__,当然debug模式不会。将这段代码放在你的头文件当中,你就可以放心的使用NSLog了!
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/testbutton" android:text="@string/hello" android:layout_alignParentBottom="true" /> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/list" android:layout_alignParentTop="true" android:layout_above="@id/testbutton" /> </RelativeLayout>
android:layout_above="@id/testbutton" 让ListView 在 Button之上