我希望我的第二个活动每秒运行一次并将更新发送到我的第一个活动。如果我不希望我的屏幕也一直闪烁,意味着我也可以启动其他活动。比如像应用程序的后台活动那样制作第二个活动。我是这个编程的新手,所以我希望可以告诉我如何使用该方法。感谢。
第一项活动
package com.example.suntracking;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener{
TextView aziangle,elevation,numberof,rightasc,decli,hourangle,solartime,showinlat,showinlong,
showintimezone,showindlst,showinofftime,showinoffazi,showinoffele,showinoffphi,showinofflamda,showinoffxi,
showdate,showtime,showday;
Button editting;
Float latval,longval,offtimeval,offazival,offeleval,offphival,offlamdaval,offxival;
int timeval,taketimesec,taketimeminute,taketimehour,takedateday,takedatemonth,takedateyear;
String show1,show2,show3,show4,sshowday,takeampmtext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
loadSavedpreferences();
}
private void initialize() {
// TODO Auto-generated method stub
aziangle=(TextView)findViewById(R.id.tvAziAngle);
elevation=(TextView)findViewById(R.id.tvElevation);
numberof=(TextView)findViewById(R.id.tvNumberof);
rightasc=(TextView)findViewById(R.id.tvRightAsc);
decli=(TextView)findViewById(R.id.tvDecli);
hourangle=(TextView)findViewById(R.id.tvHourAngle);
solartime=(TextView)findViewById(R.id.tvSolarTime);
showday=(TextView)findViewById(R.id.tvDay);
showdate=(TextView)findViewById(R.id.tvDate);
showtime=(TextView)findViewById(R.id.tvTime);
showinlat=(TextView)findViewById(R.id.tvShowInLat);
showinlong=(TextView)findViewById(R.id.tvShowInLong);
showintimezone=(TextView)findViewById(R.id.tvShowInTimeZone);
showindlst=(TextView)findViewById(R.id.tvShowInDLST);
showinofftime=(TextView)findViewById(R.id.tvShowInOffTime);
showinoffazi=(TextView)findViewById(R.id.tvShowInOffAzimuth);
showinoffele=(TextView)findViewById(R.id.tvShowInOffElevation);
showinoffphi=(TextView)findViewById(R.id.tvShowInOffphi);
showinofflamda=(TextView)findViewById(R.id.tvShowInOfflamda);
showinoffxi=(TextView)findViewById(R.id.tvShowInOffxi);
editting=(Button)findViewById(R.id.bedit);
editting.setOnClickListener(this);
}
private void loadSavedpreferences() {
// TODO Auto-generated method stub
SharedPreferences savedata= getSharedPreferences("savealldata",0);
sshowday=savedata.getString("daytext",null);
showday.setText(sshowday);
takedateday=savedata.getInt("dateday",00);
takedatemonth=savedata.getInt("datemonth", 00);
takedateyear=savedata.getInt("dateyear", 00);
showdate.setText(takedateday + "/" + takedatemonth + "/" + takedateyear);
taketimesec=savedata.getInt("timesec", 00);
taketimeminute=savedata.getInt("timeminute", 00);
taketimehour=savedata.getInt("timehour", 00);
takeampmtext=savedata.getString("ampmtext", "AM");
showtime.setText(taketimehour + ":" + taketimeminute + ":" + taketimesec + takeampmtext);
show1=savedata.getString("show1",null);
latval=savedata.getFloat("latval", 0);
showinlat.setText("Latitude : " + latval + ", " + show1);
show2=savedata.getString("show2",null);
longval=savedata.getFloat("longval",0);
showinlong.setText("Longitude : " + longval + ", " + show2);
show3=savedata.getString("show3",null);
timeval=savedata.getInt("timezoneval",0);
showintimezone.setText("Time Zone : " + timeval + show3);
show4=savedata.getString("show4","No");
showindlst.setText("Daylight Saving Time : "+ show4);
offtimeval=savedata.getFloat("show5",0);
showinofftime.setText("Offset Time : " + offtimeval);
offazival=savedata.getFloat("show6",0);
showinoffazi.setText("Offset Azimuth : "+ offazival);
offeleval=savedata.getFloat("show7",0);
showinoffele.setText("Offset Elevation : " + offeleval);
offphival=savedata.getFloat("show8", 0);
showinoffphi.setText("Offset Φ :" + offphival);
offlamdaval=savedata.getFloat("show9", 0);
showinofflamda.setText("Offset λ : "+offlamdaval);
offxival=savedata.getFloat("show10", 0);
showinoffxi.setText("Offset ξ : "+ offxival);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent e=new Intent(MainActivity.this, Parameterlist.class);
startActivity(e);
}
/*private void savePreferences(String string, String value) {
// TODO Auto-generated method stub
SharedPreferences savedata = getApplicationContext().getSharedPreferences(
"savealldata", MODE_PRIVATE);
Editor editor=savedata.edit();
editor.putString("show1", show1);
editor.commit();
}*/
/*@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
loadSavedpreferences();
//Bundle getanswer=data.getExtras();
//show1=getanswer.getString("showloc1");
//latval=getanswer.getFloat("anslatitudevalue");
//showinlat.setText("Latitude is : " + latval + ", " + show1);
//show2=getanswer.getString("Floatiloc");
//Floatval=getanswer.getFloat("ansFloatitudevalue");
//showinFloat.setText("Latitude is : " + Floatval + ", " + show2);
}
}*/
}
第二项活动
package com.example.suntracking;
import java.util.Calendar;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
public class TimeClock extends Activity{
int timesec,timeminute,timehour,dateday,datemonth,dateyear,day,ampm;
String daytext,ampmtext;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//do anything
Calendar c = Calendar.getInstance();
timesec = c.get(Calendar.SECOND);
timeminute = c.get(Calendar.MINUTE);
timehour = c.get(Calendar.HOUR);
ampm = c.get(Calendar.AM_PM);
if(ampm==0){
ampmtext="AM";
}else {
ampmtext="PM";
}
dateday = c.get(Calendar.DAY_OF_MONTH);
datemonth = c.get(Calendar.MONTH);
datemonth += 1;
dateyear = c.get(Calendar.YEAR);
day = c.get(Calendar.DAY_OF_WEEK);
switch(day){
case 1:
daytext="SUNDAY";
break;
case 2:
daytext="MONDAY";
break;
case 3:
daytext="TUESDAY";
break;
case 4:
daytext="WEDNESDAY";
break;
case 5:
daytext="THURSDAY";
break;
case 6:
daytext="FRIDAY";
break;
case 7:
daytext="SATURDAY";
break;
}
savePreferences();
Intent i= new Intent(TimeClock.this,MainActivity.class);
startActivity(i);
finish();
}
private void savePreferences() {
// TODO Auto-generated method stub
SharedPreferences savedata = getSharedPreferences("savealldata",0);
Editor editor=savedata.edit();
editor.putInt("timesec",timesec);
editor.putInt("timeminute", timeminute);
editor.putInt("timehour", timehour);
editor.putInt("dateday", dateday);
editor.putInt("datemonth", datemonth);
editor.putInt("dateyear", dateyear);
editor.putInt("ampm", ampm);
editor.putString("daytext", daytext);
editor.putString("ampmtext", ampmtext);
editor.commit();
}
}
编辑:最新编码
package com.example.suntracking;
import java.util.Calendar;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener{
//showing input and output
TextView aziangle,elevation,numberof,rightasc,decli,hourangle,solartime,showinlat,showinlong,
showintimezone,showindlst,showinofftime,showinoffazi,showinoffele,showinoffphi,showinofflamda,showinoffxi,
showdate,showtime,showday;
Button editting;
Float latval,longval,offtimeval,offazival,offeleval,offphival,offlamdaval,offxival;
int timeval,taketimesec,taketimeminute,taketimehour,takedateday,takedatemonth,takedateyear;
String show1,show2,show3,show4,sshowday,takeampmtext;
//for clock
int timesec,timeminute,timehour,dateday,datemonth,dateyear,day,ampm;
String daytext,ampmtext,showazi,showele,shownoday,showra,showdecli,showh_angle,shows_time;
Handler mHandler = new Handler();
Runnable r;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
loadSavedpreferences();
r = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(1000);
mHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// Write your code here to update the UI.
Save_fetchPref();
run_cal();
}
private void run_cal() {
// TODO Auto-generated method stub
Intent j=new Intent(MainActivity.this,Calculation.class);
startActivity(j);
}
private void Save_fetchPref() {
// TODO Auto-generated method stub
Calendar c = Calendar.getInstance();
timesec = c.get(Calendar.SECOND);
timeminute = c.get(Calendar.MINUTE);
timehour = c.get(Calendar.HOUR_OF_DAY);
ampm = c.get(Calendar.AM_PM);
if(ampm==0){
ampmtext="AM";
}else {
ampmtext="PM";
}
dateday = c.get(Calendar.DAY_OF_MONTH);
datemonth = c.get(Calendar.MONTH);
datemonth += 1;
dateyear = c.get(Calendar.YEAR);
day = c.get(Calendar.DAY_OF_WEEK);
switch(day){
case 1:
daytext="SUNDAY";
break;
case 2:
daytext="MONDAY";
break;
case 3:
daytext="TUESDAY";
break;
case 4:
daytext="WEDNESDAY";
break;
case 5:
daytext="THURSDAY";
break;
case 6:
daytext="FRIDAY";
break;
case 7:
daytext="SATURDAY";
break;
}
savePreferences();
loadSavedpreferences();
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
}
private void savePreferences() {
// TODO Auto-generated method stub
SharedPreferences savedata = getSharedPreferences("savealldata",0);
Editor editor=savedata.edit();
editor.putInt("timesec",timesec);
editor.putInt("timeminute", timeminute);
editor.putInt("timehour", timehour);
editor.putInt("dateday", dateday);
editor.putInt("datemonth", datemonth);
editor.putInt("dateyear", dateyear);
editor.putInt("ampm", ampm);
editor.putString("daytext", daytext);
editor.putString("ampmtext", ampmtext);
editor.commit();
}
private void initialize() {
// TODO Auto-generated method stub
aziangle=(TextView)findViewById(R.id.tvAziAngle);
elevation=(TextView)findViewById(R.id.tvElevation);
numberof=(TextView)findViewById(R.id.tvNumberof);
rightasc=(TextView)findViewById(R.id.tvRightAsc);
decli=(TextView)findViewById(R.id.tvDecli);
hourangle=(TextView)findViewById(R.id.tvHourAngle);
solartime=(TextView)findViewById(R.id.tvSolarTime);
showday=(TextView)findViewById(R.id.tvDay);
showdate=(TextView)findViewById(R.id.tvDate);
showtime=(TextView)findViewById(R.id.tvTime);
showinlat=(TextView)findViewById(R.id.tvShowInLat);
showinlong=(TextView)findViewById(R.id.tvShowInLong);
showintimezone=(TextView)findViewById(R.id.tvShowInTimeZone);
showindlst=(TextView)findViewById(R.id.tvShowInDLST);
showinofftime=(TextView)findViewById(R.id.tvShowInOffTime);
showinoffazi=(TextView)findViewById(R.id.tvShowInOffAzimuth);
showinoffele=(TextView)findViewById(R.id.tvShowInOffElevation);
showinoffphi=(TextView)findViewById(R.id.tvShowInOffphi);
showinofflamda=(TextView)findViewById(R.id.tvShowInOfflamda);
showinoffxi=(TextView)findViewById(R.id.tvShowInOffxi);
editting=(Button)findViewById(R.id.bedit);
editting.setOnClickListener(this);
}
private void loadSavedpreferences() {
// TODO Auto-generated method stub
SharedPreferences savedata= getSharedPreferences("savealldata",0);
//input
sshowday=savedata.getString("daytext",null);
showday.setText(sshowday);
takedateday=savedata.getInt("dateday",00);
takedatemonth=savedata.getInt("datemonth", 00);
takedateyear=savedata.getInt("dateyear", 00);
showdate.setText(takedateday + "/" + takedatemonth + "/" + takedateyear);
taketimesec=savedata.getInt("timesec", 00);
taketimeminute=savedata.getInt("timeminute", 00);
taketimehour=savedata.getInt("timehour", 00);
takeampmtext=savedata.getString("ampmtext", "AM");
showtime.setText(taketimehour + ":" + taketimeminute + ":" + taketimesec + takeampmtext);
show1=savedata.getString("show1",null);
latval=savedata.getFloat("latval", 0);
showinlat.setText("Latitude : " + latval + ", " + show1);
show2=savedata.getString("show2",null);
longval=savedata.getFloat("longval",0);
showinlong.setText("Longitude : " + longval + ", " + show2);
show3=savedata.getString("show3",null);
timeval=savedata.getInt("timezoneval",0);
showintimezone.setText("Time Zone : " + timeval + show3);
show4=savedata.getString("show4","No");
showindlst.setText("Daylight Saving Time : "+ show4);
offtimeval=savedata.getFloat("show5",0);
showinofftime.setText("Offset Time : " + offtimeval);
offazival=savedata.getFloat("show6",0);
showinoffazi.setText("Offset Azimuth : "+ offazival);
offeleval=savedata.getFloat("show7",0);
showinoffele.setText("Offset Elevation : " + offeleval);
offphival=savedata.getFloat("show8", 0);
showinoffphi.setText("Offset Φ :" + offphival);
offlamdaval=savedata.getFloat("show9", 0);
showinofflamda.setText("Offset λ : "+offlamdaval);
offxival=savedata.getFloat("show10", 0);
showinoffxi.setText("Offset ξ : "+ offxival);
//output
showazi=savedata.getString("azimuth", null);
aziangle.setText("Azimuth Angle : " + showazi);
showele=savedata.getString("elevation", null);
elevation.setText("Elevation Angle" + showele);
shownoday=savedata.getString("jd", null);
numberof.setText("Number of Days : " + shownoday);
showra=savedata.getString("RA", null);
rightasc.setText("Right Ascension : " + showra);
showdecli=savedata.getString("declination", null);
decli.setText("Declination Angle : " + showdecli);
showh_angle=savedata.getString("h_angle", null);
hourangle.setText("Hour Angle : " + showh_angle);
shows_time=savedata.getString("s_time", null);
solartime.setText("Solar Time : " + shows_time);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mHandler.removeCallbacks(run);
Intent e=new Intent(MainActivity.this, Parameterlist.class);
startActivity(e);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mHandler.removeCallbacks(run);
}
}
答案 0 :(得分:0)
您可以在每1秒(1000 ns)的ManActivity to Update首选项中使用Handler:
Handler mHandler = new Handler();
现在创建一个Thread并使用while循环来定期使用线程的sleep方法执行任务。
Runnable run = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(1000);
mHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// Write your code here to update the UI.
Save_fetchPref();
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
public void Save_fetchPref(){
Calendar c = Calendar.getInstance();
timesec = c.get(Calendar.SECOND);
timeminute = c.get(Calendar.MINUTE);
timehour = c.get(Calendar.HOUR);
ampm = c.get(Calendar.AM_PM);
if(ampm==0){
ampmtext="AM";
}else {
ampmtext="PM";
}
dateday = c.get(Calendar.DAY_OF_MONTH);
datemonth = c.get(Calendar.MONTH);
datemonth += 1;
dateyear = c.get(Calendar.YEAR);
day = c.get(Calendar.DAY_OF_WEEK);
switch(day){
case 1:
daytext="SUNDAY";
break;
case 2:
daytext="MONDAY";
break;
case 3:
daytext="TUESDAY";
break;
case 4:
daytext="WEDNESDAY";
break;
case 5:
daytext="THURSDAY";
break;
case 6:
daytext="FRIDAY";
break;
case 7:
daytext="SATURDAY";
break;
}
savePreferences();
loadSavedpreferences();
}
停止处理程序:
onDestry()
{
mHandler.removeCallbacks(run);
}
或强>
你可以在开始时将一个布尔运行为true。 &安培;把它放在处理程序中:
if(running)
{
Save_fetchPref();
}
在onDestry()中使其运行= false。