第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Activity 中的 Android 上下文可以是靜態(tài)的嗎?

Activity 中的 Android 上下文可以是靜態(tài)的嗎?

米琪卡哇伊 2022-07-20 12:24:46
我有一個靜態(tài)函數(shù),我需要在其中訪問我的顏色資源。為了訪問顏色資源,我需要靜態(tài)的上下文變量。如果我可以使上下文靜態(tài),我會感到困惑。它有任何副作用嗎?或者,有沒有其他方法可以在不使用上下文的情況下訪問我的資源這是功能 private static SpannableStringBuilder setTextColor(      SpannableStringBuilder Text, int spanLength, boolean isSuggestion) {    addressText.setSpan(        new ForegroundColorSpan(            context                .getResources()                .getColor(                    isSuggestion ? R.color.blur: R.color.red)),        addressText.length() - 1 - spanLength,        addressText.length(),        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    return Text;  } 
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊

如果我可以使上下文靜態(tài),我會感到困惑。它有任何副作用嗎?


您可以將上下文聲明為靜態(tài),但在 Android 中不建議這樣做,因為它可能會導(dǎo)致您的應(yīng)用程序出現(xiàn)內(nèi)存泄漏。


有沒有其他方法可以在不使用上下文的情況下訪問我的資源?


不,您需要一個上下文實例來訪問應(yīng)用程序中的資源。


回到您的案例,最簡單的方法是將上下文作為方法的參數(shù)傳遞。


private static SpannableStringBuilder setTextColor(Context context, SpannableStringBuilder Text, int spanLength, boolean isSuggestion) {

    int color = context.getResources().getColor(isSuggestion ? R.color.blur : R.color.red);


    addressText.setSpan(new ForegroundColorSpan(color),

            addressText.length() - 1 - spanLength,

            addressText.length(),

            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


    return Text;

}

this例如,在您的活動中,在調(diào)用時作為上下文傳遞setTextColor。


setTextColor(this, new SpannableStringBuilder(), 0, false); 


查看完整回答
反對 回復(fù) 2022-07-20
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗 獲得超2個贊

在 Kotlin 中,您可以通過創(chuàng)建一個擴(kuò)展 Application 的類并將應(yīng)用程序上下文存儲在伴隨對象中來實現(xiàn)這一點。


通常它看起來類似于這樣:


class App : Application() {


    override fun onCreate() {

        super.onCreate()

        instance = this

    }


    companion object {

        private var instance: App? = null

        val context: Context?

            get() = instance?.applicationContext

    }

}

您可以在任何地方通過以下方式訪問上下文App.context


關(guān)于您對存儲靜態(tài)上下文的擔(dān)憂,如果您正在存儲活動或片段上下文,那么您可能會產(chǎn)生內(nèi)存泄漏,但由于我們正在存儲與整個應(yīng)用程序的生命周期相關(guān)的應(yīng)用程序上下文,因此不會不是內(nèi)存泄漏的任何問題。


如果您想編寫依賴于靜態(tài)上下文的可測試代碼,您可能會遇到問題,在這種情況下,我建議您將上下文傳遞給函數(shù)而不是直接訪問它。


查看完整回答
反對 回復(fù) 2022-07-20
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

1)創(chuàng)建擴(kuò)展應(yīng)用程序的應(yīng)用程序類


private static Context context;


@Override

public void onCreate() {

    super.onCreate();

    context = getApplicationContext();

2) 創(chuàng)建返回上下文的 getApplicationContext() 方法


public static Context getApplicationContext() {

  return context;

}

3)現(xiàn)在您可以在課堂上的任何地方獲取上下文,例如


Context context = App.getContext().getApplicationContext();


查看完整回答
反對 回復(fù) 2022-07-20
  • 3 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號