Как сделать базу для важной функции для всей деятельности - PullRequest
0 голосов
/ 10 января 2019

У меня есть одна функция для проверки интернет-соединения пользователя, но я должен использовать этот код во всех действиях для проверки интернет-соединения пользователя. Если пользователь не подключен к Интернету, он получает сохраненные новости из SQLite.

Просто хочу узнать, как использовать это Any для разных видов деятельности.

Полезный вопрос для всех:

  1. Для вызова дооснащения от API.
  2. Для общих преференций.
  3. Для функции помощника пользователя, аналогичной данному коду

Только для примера:

public boolean isConnected() throws InterruptedException, IOException {
    final String command = "ping -c 1 google.com";
    return Runtime.getRuntime().exec(command).waitFor() == 0;
}

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Для Разработчики Kotlin :

Сделай один класс котлина,

MainApp.kt :

class MainApp : Application() {
    lateinit var API: API
    lateinit var savedData: SharedPreferences

    override fun onCreate() {
        super.onCreate()
        MainApp.appContext = applicationContext
        TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/hn.ttf");
        initializeConfigs()
    }

    companion object {
        lateinit var userHelper: UserHelper
    }

    private fun initializeConfigs(){
        savedData = getSharedPreferences("Proj", Context.MODE_PRIVATE)
        userHelper = UserHelper(savedData)
        val retrofit = Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(OkHttpClient.Builder().addInterceptor(logging).addInterceptor(HeaderInterceptor(userHelper)).build())
                .addConverterFactory(GsonConverterFactory.create())
                .build()
        API = retrofit.create(API::class.java)
    }

    fun getUserHelper(): UserHelper{
        return userHelper
    }
}

Создать файл Kotlin для API Api :

interface SwiftAPI {
    @POST("api/guest")
    fun registerGuest(): Call<UserTokens>
}

Создать другой класс для UserHelper.kt :

class UserHelper(val sharedPreferences: SharedPreferences) {
        public boolean isConnected() throws InterruptedException, IOException {
                final String command = "ping -c 1 google.com";
                return Runtime.getRuntime().exec(command).waitFor() == 0;
       }
}
0 голосов
/ 10 января 2019
  1. Создать файл Kotlin, например, по имени Utils;

  2. Создайте функцию в этом файле и добавьте параметр Context:

    fun isConnected(ctx: Context): Boolean {
        val cm = ctx.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val activeNetwork =cm.activeNetworkInfo
        return activeNetwork != null && activeNetwork.isConnectedOrConnecting
    } 
    

    Если вы собираетесь использовать его только в Activity, вы можете создать расширение функцию для класса Activity без Context параметра:

    fun Activity.isConnected(): Boolean {
        val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val activeNetwork =cm.activeNetworkInfo
        return activeNetwork != null && activeNetwork.isConnectedOrConnecting
    }
    
  3. Вызывайте эту функцию откуда угодно. Если вы звоните из Activity просто используйте код:

    isConnected(this@YourActivity)
    

    Если вы создали функцию extension , просто вызовите ее в Activity без передачи каких-либо параметров:

    isConnected()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...