首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,371 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
10,983 阅读
3
gradle-5.4.1-all.zip下载
8,873 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,834 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,874 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
624
篇文章
累计收到
617
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
17
篇与
的结果
2020-09-23
Android OKHttp发送get网络请求实例
今天总算把安卓的网络请求弄了一下了。获取的是我自己做的接口:https://api.565.ink/one/随机一句英语,不得不说换一门语言,写法上真的有点不适应。MainActivify.javapackage ink.cik.firsthttpapp; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.io.IOException; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity { TextView responseText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.btnSyncTest); responseText = findViewById(R.id.response_text); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("点击事件", "点击发送请求按钮"); sendRequest(); } }); } private void sendRequest() { //开启线程发送请求 new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("https://api.565.ink/one/").build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); showResponse(responseData); } catch (IOException e) { e.printStackTrace(); } } }).start(); } private void showResponse(final String response) { runOnUiThread(new Runnable() { @Override public void run() { responseText.setText(response); } }); } }AndroidMainifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ink.cik.firsthttpapp"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>activity_main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btnSyncTest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="同步测试" /> <Button android:id="@+id/btnAsyncTest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="异步测试" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/etId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="6" android:hint="输入用户编号" android:inputType="number" /> <Button android:id="@+id/btnParamTest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="doParamTest" android:text="传参测试" /> </LinearLayout> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/response_text" android:layout_width="match_parent" android:layout_height="match_parent" /> </ScrollView> </LinearLayout>build.gradleapply plugin: 'com.android.application' android { compileSdkVersion 30 buildToolsVersion "30.0.2" defaultConfig { applicationId "ink.cik.firsthttpapp" minSdkVersion 30 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation 'com.squareup.okio:okio:2.8.0' }总结一下踩得一些坑。坑一:导入okhttp包导错了地方。书上说,要在build.gradle中导入okhttp和okio于是乎。。这两个里面果断的选择了第一个,因为名字是自己取的,按照python来说,默认的都是系统的。结果出错了,其实是Module:app这个坑二:本来我是本地搭建的环境,然后电脑端自己修改的hosts,将lan指向了127.0.0.1于是乎。坑三:原本用的http,结果不行,百度发现得https
2020年09月23日
1,058 阅读
2 评论
1 点赞
2020-09-20
Android中Activity类的7个回调方法
第一行代码安卓第二版P65页:onCreate()这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用,你应该在这个方法中完成活动的初始化操作,比如加载布局,绑定事件等。onStart() 这个方法在活动由不可见变为可见的时候调用。onResume() 这个方法在活动准备好喝用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。onPause() 这个方法在系统准备去启动或者恢复另一个活动的时候调用,我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。onStop() 这个方法在活动完全不可见的时候调用,它和onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。onDestory() 这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。onRestart() 这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。 以上7个方法中除了 onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。完整生存期。活动在onCreate()方法和onDestory()方法之间所经历的,就是完整生存期,一般情况下,一个活动会在onCreate()方法中完成各种初始化操作,而在onDestory()方法中完成释放内存的操作。可见生存期。活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。在可见生存期呢,活动对于用户总是可见的。即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源,比如在onStart()方法中对资源重载,在onStop()方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。前台生存期。活动在onResume()方法和onPause()方法之间所经历的就是前台生存期。在前台生存期呢,活动总是处于运行状态的,此时的活动是可以和用户进行交互的,我们平时看到和接触的最多也就是这个状态下的活动。以上笔记皆来自于《第一行代码》,为了加深记忆,所以自己手动敲一遍,留个记录。
2020年09月20日
1,324 阅读
0 评论
0 点赞
2020-09-20
This view is not constrained. It only has designtime positions, so it will jump to (0,0) at runtime
Android Studio添加控件出现This view is not constrained. It only has designtime positions, so it will jump to (0,0) at runtime unless you add the constraints解决方案:选中控件,点击上面的魔法棒解决:
2020年09月20日
1,063 阅读
0 评论
0 点赞
1
2
3