mainActivity
package com.example.administrator.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.example.administrator.myapplication.R;
public class MainActivity extends AppCompatActivity {
private static Handler handler = new Handler();
private static TextView tShower = null;
private static TextView sShower = null;
private static TextView mShower = null;
private static TextView hShower = null;
Button startButton = null;
Button stopButton = null;
Button countButton = null;
private static int t=0;
private static int s=0;
private static int m=0;
private static int h=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
tShower = (TextView)findViewById(R.id.tText);
sShower = (TextView)findViewById(R.id.sText);
mShower = (TextView)findViewById(R.id.mText);
hShower = (TextView)findViewById(R.id.hText);
startButton = (Button)findViewById(R.id.startButton);
stopButton = (Button)findViewById(R.id.stopButton);
countButton = (Button)findViewById(R.id.countButton);
final Intent serviceIntent = new Intent(this, timeService.class);
startButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){
if (timeService.flag==1) {
timeService.flag=2;
}
else{
startService(serviceIntent);
}
}
});
stopButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){
stopService(serviceIntent);
}
});
countButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){
timeService.flag=1;
}
});
}
public static void UpdateGUI(int tCount, int sCount, int mCount, int hCount){
t=tCount;
s=sCount;
m=mCount;
h=hCount;
handler.post(RefreshLable);
}
private static Runnable RefreshLable = new Runnable(){
@Override
public void run()
{
tShower.setText(String.valueOf(t));
sShower.setText(String.valueOf(s));
mShower.setText(String.valueOf(m));
hShower.setText(String.valueOf(h));
}
};
}
timeService
package com.example.administrator.myapplication;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
import java.util.Date;
public class timeService extends Service
{
private Thread workThread;
int sCount=0;
int mCount=0;
int hCount=0;
public static int flag=0;
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this, "(1) 调用onCreate()",
Toast.LENGTH_LONG).show();
workThread = new Thread(null,backgroudWork,"WorkThread");
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Toast.makeText(this, "(2) 调用onStart()",
Toast.LENGTH_SHORT).show();
if (!workThread.isAlive()){
workThread.start();
}
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "(3) 调用onDestroy()",
Toast.LENGTH_SHORT).show();
workThread.interrupt();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private Runnable backgroudWork = new Runnable(){
Date dt= new Date();
Long fixedTime= dt.getTime();
Long virableTime=null;
Long temp=null;
@Override
public void run() {
try {
while(!Thread.interrupted()){
Date dt= new Date();
virableTime=dt.getTime();
temp=virableTime-fixedTime;
temp=temp/10;
int tCount=temp.intValue();
sCount=tCount/100;
mCount=sCount/60;
hCount=mCount/60;
MainActivity.UpdateGUI(tCount%100,sCount%60,mCount%60,hCount%24);
Thread.sleep(100);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}
layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:id="@+id/hText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"
android:textSize="26dp"/>
<TextView
android:id="@+id/space1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="26dp"/>
<TextView
android:id="@+id/mText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"
android:textSize="26dp"/>
<TextView
android:id="@+id/space2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="26dp"/>
<TextView
android:id="@+id/sText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"
android:textSize="26dp"/>
<TextView
android:id="@+id/space3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="26dp"/>
<TextView
android:id="@+id/tText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00"
android:textSize="26dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="开始" />
<Button
android:id="@+id/countButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="计时" />
<Button
android:id="@+id/stopButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="停止" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="计时功能真的是做不出来啊老师,计时的目标是点击时候会使时间暂停,等再点击开始时秒表会继续运行" />
</LinearLayout>
</LinearLayout>
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".timeService"
android:exported="true"
android:label="timeService"
/>
</application>
</manifest>