Android 如何避免使用静态方法
由于这个问题()已经得到了回答,我有另一种情况,我不确定使用静态方法是否有效 在名为SettingsActivity的活动中,我有一个名为FinishActivityWithResultToKey()的方法: 在完成设置活动之前,我正在另一个扩展AppWidgetProvider的类中调用这3个静态方法:Android 如何避免使用静态方法,android,static,static-methods,Android,Static,Static Methods,由于这个问题()已经得到了回答,我有另一种情况,我不确定使用静态方法是否有效 在名为SettingsActivity的活动中,我有一个名为FinishActivityWithResultToKey()的方法: 在完成设置活动之前,我正在另一个扩展AppWidgetProvider的类中调用这3个静态方法: public void setSharedPreferences() { db = new SharedPreferencesDatabase(PreferenceMa
public void setSharedPreferences() {
db = new SharedPreferencesDatabase(PreferenceManager.getDefaultSharedPreferences(_context));
}
public static void startScreenReciever() {
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
screenReciever = new ScreenReceiver();
_context.getApplicationContext().registerReceiver(screenReciever, filter);
}
public static void startClockTickAlarm(boolean code) {
AlarmManager alarmManager = (AlarmManager)_context.getSystemService(Context.ALARM_SERVICE);
long duration;
if(code)
duration = utcMillisNextMin();
else
duration = utcMillisNextSec();
if(android.os.Build.VERSION.SDK_INT < 19) {
alarmManager.set(AlarmManager.RTC, duration, createClockTickIntent());
} else {
alarmManager.setExact(AlarmManager.RTC, duration, createClockTickIntent());
}
}
public void setSharedPreferences(){
db=新的SharedReferencesDatabase(PreferenceManager.GetDefaultSharedReferences(_context));
}
公共静态无效StartScreenReceiver(){
IntentFilter过滤器=新IntentFilter(Intent.ACTION屏幕打开);
filter.addAction(Intent.ACTION\u SCREEN\u OFF);
ScreenReceiver=新ScreenReceiver();
_context.getApplicationContext().registerReceiver(屏幕接收器,过滤器);
}
公共静态无效startClockTickAlarm(布尔代码){
AlarmManager AlarmManager=(AlarmManager)_context.getSystemService(context.ALARM_SERVICE);
持续时间长;
if(代码)
持续时间=utcMillisNextMin();
其他的
持续时间=utcMillisNextSec();
if(android.os.Build.VERSION.SDK_INT<19){
alarmManager.set(alarmManager.RTC,duration,createClockTickIntent());
}否则{
setExact(alarmManager.RTC,duration,createClockTickIntent());
}
}
我想知道是否真的需要这些静态方法,或者有没有其他更好的方法来实现这一点而不使用静态方法AppWidgetProvider extends BroadcastReceiver,这样您就可以简单地发送执行所需操作的意图 小部件:
FinishActivity() {
setSharedPreferences();
startScreenReciever();
startClockTickAlarm(false);
}
向小部件添加OnReceive以读取意图并调用FinishActivity()。该活动将是创建和发送意图的活动。可能看起来像这样:
Intent uiIntent = new Intent(Constants.ACTION_WIDGET_FINISH_FROM_ACTIVITY);
context.sendBroadcast(uiIntent);
完美,通过这个简单的解决方案,我能够消除所有静态方法!很乐意帮忙。对于非widget,如果您希望通过intent调用类上的方法,您也可以编写一个广播接收器并将其存储为类的数据成员。
Intent uiIntent = new Intent(Constants.ACTION_WIDGET_FINISH_FROM_ACTIVITY);
context.sendBroadcast(uiIntent);