gpt4 book ai didi

android - 如何避免使用静态方法

转载 作者:搜寻专家 更新时间:2023-11-01 08:47:53 25 4
gpt4 key购买 nike

由于这个问题 ( Using static methods in Android? ) 已经得到回答,我有另一种情况,我不确定使用静态方法是否有效。

在名为 SettingsActivity 的 Acitivty 中,我有一个名为 finishActivityWithResultOkey() 的方法:

public void finishActivityWithResultOkey() {
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);

MyWidgetProvider.setSharedPreferences();
MyWidgetProvider.startScreenReciever();
MyWidgetProvider.startClockTickAlarm(false);


context.setResult(RESULT_OK, resultValue);
context.finish();
}

在我完成我的 SettingsActivity 之前,我在另一个扩展 AppWidgetProvider 的类中调用这 3 个静态方法:

    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());
}
}

我想知道是否真的需要这些静态方法,或者是否有另一种不使用静态方法的更好方法

最佳答案

AppWidgetProvider 扩展了 BroadcastReceiver,因此您可以简单地发送一个 Intent 来执行您需要的操作。

小部件:

FinishActivity() {
setSharedPreferences();
startScreenReciever();
startClockTickAlarm(false);
}

向小部件添加一个 onRecieve 以读取 Intent 并调用 FinishActivity()。该 Activity 将是创建和发送 Intent 的 Activity 。可能看起来像这样:

Intent uiIntent = new Intent(Constants.ACTION_WIDGET_FINISH_FROM_ACTIVITY);
context.sendBroadcast(uiIntent);

关于android - 如何避免使用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com