更新当前使用的应用程序
Update currently used app
我目前正在试用 AlarmManger,我已经设法在后台实现它 运行,我也可以敬酒,但我还没有弄清楚我应该如何编辑我的 UI?
里有东西
示例:
我有我的 MainActivity,我在 BroadcastReceiver 中的代码每分钟被调用一次,并且知道我想对 UI 进行一些更改,例如写入文本 "AlarmManger has fired x - times"(X 将是一个计数器)
正确知道我的问题如何让我的闹钟每隔 10 秒响一次,而不是在 TIME_KICK 上响起,因为它已在接收器中注册。
希望您能理解!
谁能帮我解决我的情况?
我的 MainActivity
package..
imports[]
public class MainActivity extends ActionBarActivity {
private PendingIntent pendingIntent;
BroadcastReceiver broadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlarmReceiver lAlarmReceiver = new AlarmReceiver(this);
Intent alarmIntent = new Intent(MainActivity.this,AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,alarmIntent,0);
findViewById(R.id.btnStartCounting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
start();
}
});
}
public void start(){
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
int interval = 6;
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),interval,pendingIntent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
我的报警器:
public class AlarmReceiver extends BroadcastReceiver{
Context mContext;
public AlarmReceiver(Context mContext){
this.mContext=mContext;
}
@Override
public void onReceive(Context context, Intent intent) {
ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
}
}
你能用一些代码更新问题吗?
你可以这样做
(您需要一个准确的代码来检查它被调用了多少次吗?)
public class MainActivity extends ActionBarActivity {
int s= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkFiredTimes();
}
public void checkFiredTimes(){
//Code that checks how many times is AlarmManager called
//Every time it is called
s++;
Toast.makeText(this,"AlarmManager has fired "+s+" times",Toast.LENGTH_SHORT).show();
}
}
您可以使用 SharedPreferences
来执行此操作。
在您的广播接收器中,增加您的偏好:
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
int count = sharedPreferences.getInt("count", 0) + 1;
editor.putInt("count", count);
editor.commit();
}
在您的 activity 中,设置您的 TextView
onResume()
并注册一个 OnPreferenceChangeListener
来更改它 onSharedPreferenceChange()
:
public class MainActivity extends ActionBarActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
SharedPreferences mSharedPreferences;
TextView mCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mCount = (TextView) findViewById(R.id.count);
}
@Override
protected void onResume() {
super.onResume();
mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
mCount.setText(Integer.toString(mSharedPreferences.getInt("count", 0)));
}
@Override
protected void onPause() {
super.onPause();
mSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(key.equals("count")){
mCount.setText(Integer.toString(mSharedPreferences.getInt("count", 0)));
}
}
}
我目前正在试用 AlarmManger,我已经设法在后台实现它 运行,我也可以敬酒,但我还没有弄清楚我应该如何编辑我的 UI?
里有东西示例: 我有我的 MainActivity,我在 BroadcastReceiver 中的代码每分钟被调用一次,并且知道我想对 UI 进行一些更改,例如写入文本 "AlarmManger has fired x - times"(X 将是一个计数器)
正确知道我的问题如何让我的闹钟每隔 10 秒响一次,而不是在 TIME_KICK 上响起,因为它已在接收器中注册。 希望您能理解!
谁能帮我解决我的情况?
我的 MainActivity
package..
imports[]
public class MainActivity extends ActionBarActivity {
private PendingIntent pendingIntent;
BroadcastReceiver broadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlarmReceiver lAlarmReceiver = new AlarmReceiver(this);
Intent alarmIntent = new Intent(MainActivity.this,AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,alarmIntent,0);
findViewById(R.id.btnStartCounting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
start();
}
});
}
public void start(){
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
int interval = 6;
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),interval,pendingIntent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
我的报警器:
public class AlarmReceiver extends BroadcastReceiver{
Context mContext;
public AlarmReceiver(Context mContext){
this.mContext=mContext;
}
@Override
public void onReceive(Context context, Intent intent) {
ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
}
}
你能用一些代码更新问题吗?
你可以这样做
(您需要一个准确的代码来检查它被调用了多少次吗?)
public class MainActivity extends ActionBarActivity {
int s= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkFiredTimes();
}
public void checkFiredTimes(){
//Code that checks how many times is AlarmManager called
//Every time it is called
s++;
Toast.makeText(this,"AlarmManager has fired "+s+" times",Toast.LENGTH_SHORT).show();
}
}
您可以使用 SharedPreferences
来执行此操作。
在您的广播接收器中,增加您的偏好:
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
int count = sharedPreferences.getInt("count", 0) + 1;
editor.putInt("count", count);
editor.commit();
}
在您的 activity 中,设置您的 TextView
onResume()
并注册一个 OnPreferenceChangeListener
来更改它 onSharedPreferenceChange()
:
public class MainActivity extends ActionBarActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
SharedPreferences mSharedPreferences;
TextView mCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mCount = (TextView) findViewById(R.id.count);
}
@Override
protected void onResume() {
super.onResume();
mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
mCount.setText(Integer.toString(mSharedPreferences.getInt("count", 0)));
}
@Override
protected void onPause() {
super.onPause();
mSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(key.equals("count")){
mCount.setText(Integer.toString(mSharedPreferences.getInt("count", 0)));
}
}
}