android中,进入界面在onresume中怎么模拟gridview的item被点击。

我想实现的功能是,在进入界面的时候,gridview的item不用自己按下就被点击,然后可以执行OnItemClickListener里的方法。ps:在activity中,怎么判断gridview的第几个item被选中,如果根据选中的item,获取gridview下的子控件。谢谢回答。

4个回答

模拟发送点击动作呗
1. // 模拟屏幕点击事件 - 只在 Activity 中有用

2. public void setMouseClick(){

3. MotionEvent evenDownt = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis() + 100,

4. MotionEvent.ACTION_DOWN, 100, 400, 0);

5. dispatchTouchEvent(evenDownt);

6. MotionEvent eventUp = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis() + 100,

7. MotionEvent.ACTION_UP, 100, 400, 0);

8. dispatchTouchEvent(eventUp);

9. evenDownt.recycle();

10. eventUp.recycle();

11. }

yinxiaopei
懒洋洋大人 亲 我主要想知道的是怎么自动进入item的点击事件,,
4 年多之前 回复

点击事件既然叫做点击事件,作用就是响应点击动作,来进行操作,不管是模拟点击还是实际点击,都要有点击这个动作。
如果你想执行某操作,又不想进行点击,那又何必把操作写在点击事件里,直接写到oncreate里,不就进了界面就执行了。

好吧,也许我说的有点问题,换个方式再说一次好了……如果是想在离开页面再回来时,恢复先前状态的话,不必执着于“再点一次”这件事,
而把注意力放到恢复该点击事件所形成的结果上。
例如,点一个item,在页面容器中放入了一个fragment,离开再回来,
不用去记录“点的哪个item,再点一次”
而是,记录“离开时放入的是哪个fragment,在容器中重新加载该fragment”,这样就行了。

同样,点一个item,显示了某些东西,离开再回来,
不用去记录“点的哪个item,再点一次”
而是,记录“离开时哪些组件内容发生了变化,发生了什么变化,在恢复页面时,把这些变化恢复了”,这样就行了。

看看grideview有没有类似 pre...click的方法,有的话就在onresume调用,button是有这个方法的,或者你在item中加button

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android 为什么 onDestroy() 会在 onResume()之后执行?
从activityA跳到activityB,并且activityA执行 finish()方法,为什么在activityB的onResume结束之后,才运行activityA的onDestroy()方法?
Android 手持PDA 如何让扫描到的数据,跟随光标,输入到任意EditText
最近在研究Android 手持PDA的扫描系统 从厂家获得到了demo的源代码, 按照厂家的源代码修改完之后。发现扫描到的内容只能输入到固定的文本框内 如果一个界面内有有两个文本框,就只能输入到第一个文本框内。 请问如何能根据光标的位置,输入到不同的文本框内 布局文件 ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="50dp" android:text="Scan Test" android:id="@+id/tv_title" android:textSize="40dp"/> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:layout_below="@+id/tv_title" android:id="@+id/et1"/> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:layout_below="@+id/et1" android:id="@+id/et2"/> <Button android:id="@+id/btnOpen" android:layout_below="@+id/et2" android:text="Scan" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> ``` JAVA文件 ``` import android.Manifest; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.text.Selection; import android.text.Spannable; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.qs.service.ScanService; import com.zebra.sdl.SDLguiActivity; import java.util.ArrayList; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private ScanBroadcastReceiver scanBroadcastReceiver; Button btnOpen, btnEdit; public static EditText et_code1; List<Map<String, String>> listData = new ArrayList<Map<String, String>>(); String str2,str1,str; String TAG="数据"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_code1 = (EditText) findViewById(R.id.et1); et_code1.setText(""); btnOpen = (Button) findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { //斑马头软解码方式 if(Build.MODEL.contains("mipi")){ SDLguiActivity.doDecode(); }else{ //普通硬解码 ScanService.openScan(); } } }); //斑马头软解码方式 if(Build.MODEL.contains("mipi")){ //软解码为摄像头形式,需要加上权限 if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 1000); } else { //说明已经获取到摄像头权限了 想干嘛干嘛 Intent newIntent = new Intent(MainActivity.this, SDLguiActivity.class); newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startService(newIntent); } }else{ Intent newIntent = new Intent(MainActivity.this, ScanService.class); newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startService(newIntent); } scanBroadcastReceiver = new ScanBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.qs.scancode"); this.registerReceiver(scanBroadcastReceiver, intentFilter); } @Override protected void onResume() { System.out.println("onResume" + "open"); Log.v("onResume", "open"); super.onResume(); } @Override protected void onDestroy() { this.unregisterReceiver(scanBroadcastReceiver); super.onDestroy(); } class ScanBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //text1为扫描信息 String text1 = intent.getExtras().getString("code"); String str = et_code1.getText().toString().trim()+"\n"; et_code1.setText(str + text1); Editable text = et_code1.getText(); Spannable spanText = text; Selection.setSelection(spanText, text.length()); } } } ``` 求大神指点,本人是初学者,麻烦详细一点。
android中关于Activity生命周期的方法只有两个 onCreate,onResume
public class BolgDetailActivity extends SuperActivity implements OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_detail); getWindow().setBackgroundDrawable(null); initView(); } protected void onResume() { super.onResume(); Intent intent = this.getIntent(); item = (BlogItem) intent.getSerializableExtra("item"); if ( item!=null ) { title.setText(item.getTitle()); url = PATH + item.getId(); loadBolgDetailInfo(url); }
生命周期onResume()自己执行了
最近项目中遇到的问题: 一个activity加载完毕后,不做任何操作,差不多16分钟左右,重新执行了activity的 onResume()方法。 这是什么原因,如何解决?
Android拍视频预览的界面被拉伸
最近 Android 需要做一个拍视频保存然后上传的功能,基本功能实现了,但是有一个小 bug,就是预览的时候界面明显被拉长了,但是各种预览设置的参数也都试过了,都没有用,来请教一下。 #代码如下: ##1. Activity ``` public class RecordActivity extends AppCompatActivity implements SurfaceHolder.Callback { private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; private Button btnStartStop; private boolean isRecording = false; // 标记是否已经在录制 private MediaRecorder mRecorder; // 音视频录制类 private Camera mCamera = null; // 相机 private List<Camera.Size> mSupportedPreviewSizes = null; private Camera.Size mPreviewSize; private Camera.Size mSize = null;// 相机的尺寸 private int mCameraFacing = Camera.CameraInfo.CAMERA_FACING_BACK; // 默认后置摄像头 private static final SparseIntArray orientations = new SparseIntArray(); // 手机旋转对应的调整角度 static { orientations.append(Surface.ROTATION_0, 90); orientations.append(Surface.ROTATION_90, 0); orientations.append(Surface.ROTATION_180, 270); orientations.append(Surface.ROTATION_270, 180); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initWindow(); setContentView(R.layout.activity_record); initViews(); } /** * 初始化窗口 */ private void initWindow() { requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 设置全屏 // 设置竖屏显示 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 选择支持半透明模式,在有 surfaceView 的 activity 中使用。 getWindow().setFormat(PixelFormat.TRANSLUCENT); } /** * 视图对象初始化 */ private void initViews() { mSurfaceView = (SurfaceView) findViewById(R.id.surfaceview); btnStartStop = (Button) findViewById(R.id.btnStartStop); btnStartStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!isRecording) { startRecord(); } else { stopRecord(); } } }); SurfaceHolder holder = mSurfaceView.getHolder(); // 取得holder holder.setFormat(PixelFormat.TRANSPARENT); holder.setKeepScreenOn(true); holder.addCallback(this); // holder加入回调接口 } /** * 初始化相机 */ private void initCamera() { /** * 默认打开后置摄像头 */ if (Camera.getNumberOfCameras() == 2) { mCamera = Camera.open(mCameraFacing); } else { mCamera = Camera.open(); } CameraSizeComparator sizeComparator = new CameraSizeComparator(); Camera.Parameters parameters = mCamera.getParameters(); if (mSize == null) { mSupportedPreviewSizes = parameters.getSupportedPreviewSizes(); Collections.sort(mSupportedPreviewSizes, sizeComparator); for (int num = 0; num < mSupportedPreviewSizes.size(); num++) { Camera.Size size = mSupportedPreviewSizes.get(num); if (size.width >= 1000 && size.height >= 1000) { this.mSize = size; break; } } mSize = mSupportedPreviewSizes.get(0); /** * 增加对聚焦模式的判断 */ List<String> focusModesList = parameters.getSupportedFocusModes(); if (focusModesList.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) { parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); } else if (focusModesList.contains(Camera.Parameters.FOCUS_MODE_AUTO)) { parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); } mCamera.setParameters(parameters); } int rotation = getWindowManager().getDefaultDisplay().getRotation(); int orientation = orientations.get(rotation); mCamera.setDisplayOrientation(orientation); } @Override protected void onResume() { super.onResume(); initCamera(); } @Override public void onPause() { releaseCamera(); super.onPause(); } /** * 开始录制 */ private void startRecord() { if (mRecorder == null) { mRecorder = new MediaRecorder(); // 创建MediaRecorder } if (mCamera != null) { mCamera.stopPreview(); mCamera.unlock(); mRecorder.setCamera(mCamera); } try { // 设置音频采集方式 mRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); // 设置视频的采集方式 mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); /* mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); // 设置文件的输出格式 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 设置audio的编码格式 mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); // 设置video的编码格式 mRecorder.setVideoEncodingBitRate(10 * 1024 * 1024); // 设置录制的视频编码比特率 mRecorder.setVideoFrameRate(30); // 设置录制的视频帧率 mRecorder.setVideoSize(1920, 1080); // 设置相机分辨率 */ // 设置要捕获的视频的宽度和高度 // mSurfaceHolder.setFixedSize(optimalSize.width, optimalSize.height); mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); // 设置记录会话的最大持续时间(毫秒) mRecorder.setMaxDuration(180 * 1000); mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); /** * 获取外部路径,然后将视频保存进去 */ String path = Environment.getExternalStorageDirectory().getPath(); if (path != null) { File dir = new File(path + "/crafts_videos"); if (!dir.exists()) { dir.mkdir(); } /** * 将 currentTimeMillis() 作为文件名 */ path = dir + "/" + System.currentTimeMillis() + ".mp4"; mRecorder.setOutputFile(path); //设置输出文件的路径 mRecorder.prepare(); //准备录制 mRecorder.start(); //开始录制 isRecording = true; btnStartStop.setText("停止"); } } catch (Exception e) { e.printStackTrace(); } } /** * 停止录制 */ private void stopRecord() { try { mRecorder.stop(); // 停止录制 mRecorder.reset(); // 重置 btnStartStop.setText("开始"); } catch (Exception e) { e.printStackTrace(); } isRecording = false; } /** * 释放 MediaRecorder */ private void releaseMediaRecorder() { if (mRecorder != null) { mRecorder.release(); mRecorder = null; } } /** * 释放相机资源 */ private void releaseCamera() { try { if (mCamera != null) { mCamera.stopPreview(); mCamera.setPreviewCallback(null); mCamera.unlock(); mCamera.release(); } } catch (RuntimeException e) { } finally { mCamera = null; } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 将holder,这个holder为开始在onCreate里面取得的holder,将它赋给mSurfaceHolder mSurfaceHolder = holder; if (mCamera == null) { return; } try { //设置显示 mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (Exception e) { e.printStackTrace(); releaseCamera(); finish(); } } @Override public void surfaceCreated(SurfaceHolder holder) { // 将holder,这个holder为开始在onCreate里面取得的holder,将它赋给mSurfaceHolder mSurfaceHolder = holder; try { mCamera.setPreviewDisplay(mSurfaceHolder); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { // surfaceDestroyed的时候同时对象设置为null if (isRecording && mCamera != null) { mCamera.lock(); } mSurfaceView = null; mSurfaceHolder = null; releaseMediaRecorder(); releaseCamera(); } private class CameraSizeComparator implements Comparator<Camera.Size> { public int compare(Camera.Size lhs, Camera.Size rhs) { if (lhs.width == rhs.width) { return 0; } else if (lhs.width > rhs.width) { return 1; } else { return -1; } } } } ``` ##2. 布局 ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <SurfaceView android:id="@+id/surfaceview" android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/btnStartStop" android:layout_width="60dp" android:layout_height="40dip" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:text="开始" /> </RelativeLayout> ``` ##3. 权限 ``` <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 求大神解答
在android中把数据从一个线程发送到另一个线程
我在Android UI线程执行一些程序,有一个很耗时的程序,所以我把它放在另一个线程中。 1.在这个子线程运行后,UI线程会开始执行某个程序 2.这个程序将会在子线程中创建一些数据 这是我的解决方案: Car car; public void onResume(){ super.onResume(); Thread t = new Thread(){ car = new Car(); car.takePetrol; //take car full petrol } }); t.join(); count_How_far_Car_can_go(car.getPetrol); 我的代码中的问题是:我使用 t.join(); 等待线程结束,但这将会阻止UI线程。我创建了另外一个线程,就是想让UI线程可以顺利的执行。现在阻止UI线程,我不想在程序中出现这个现象。还有什么解决方法呢?
gridview无法更新啊,求教~~~~
package jx.jvtc.bestfoddServer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import jx.jvtc.model.CustomerBuyFood; import jx.jvtc.model.FoodAndroid; import jx.jvtc.webserviceimpl.Orderbuyimpl; import android.R.integer; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NavUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.GridView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class SendMssion extends Activity { private GridView gridListView; private List<HashMap<String, Object>> data; private String test = "多列显示Test"; List<CustomerBuyFood> lsInfo; SimpleAdapter sa; public void showFoodInfo(List<FoodAndroid> lsFoodMenu, final int id) { String[] str = new String[lsFoodMenu.size()]; for (int i = 0; i < lsFoodMenu.size(); i++) { String value = lsFoodMenu.get(i).getMaterial(); value += " × "; value += lsFoodMenu.get(i).getId() + "份"; str[i] = value; } new AlertDialog.Builder(this).setTitle("需配送的菜").setItems(str, null) .setNegativeButton("正在派送", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Thread a = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub new Orderbuyimpl().updateorder(id, 0); lsInfo = new Orderbuyimpl() .getordertime(LoginState.cellPhone); data = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < lsInfo.size(); i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("sendStateStr", lsInfo.get(i) .getOflag()); System.out .println(lsInfo.get(i).getOflag()); data.add(map); } } }); a.start(); try { a.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } gridListView = (GridView) findViewById(R.id.list_gridView); sa = (SimpleAdapter) gridListView.getAdapter(); sa.notifyDataSetChanged(); // gridListView.setAdapter(sa); } }) .setPositiveButton("已送达", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub new Orderbuyimpl().updateorder(id, 1); SendMssion.this.onResume(); } }).start(); } }).show(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Thread a = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub lsInfo = new Orderbuyimpl().getordertime(LoginState.cellPhone); } }); a.start(); try { a.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (lsInfo.size() == 0) { setContentView(R.layout.activity_send_mission_null); } else { setContentView(R.layout.activity_send_mssion); gridListView = (GridView) findViewById(R.id.list_gridView); fillData(); sa = new SimpleAdapter(this, data, R.layout.activity_send_mission_item, new String[] { "phone", "address", "homeSendTime", "sendStateStr", "foodMenu", "id" }, new int[] { R.id.phone, R.id.sendAddr, R.id.sendTime, R.id.sendState }); gridListView.setAdapter(sa); gridListView .setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub HashMap<String, Object> item = (HashMap<String, Object>) arg0 .getItemAtPosition(arg2); // setTitle((String) item.get("goods_text")); // String str = item.get("phone"); // Toast.makeText(SendMssion.this, "", // Toast.LENGTH_SHORT).show(); List<FoodAndroid> lsFoodMenu; lsFoodMenu = (List<FoodAndroid>) item .get("foodMenu"); // System.out.println(lsFoodMenu.size()+" ss"); int id = (Integer) item.get("id"); // System.out.println(id + "\tsendState"); showFoodInfo(lsFoodMenu, id); } }); } } public void fillData() { data = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < lsInfo.size(); i++) { HashMap<String, Object> map = new HashMap<String, Object>(); int id = lsInfo.get(i).getId(); map.put("phone", lsInfo.get(i).getPhone()); map.put("address", lsInfo.get(i).getAddress()); map.put("homeSendTime", lsInfo.get(i).getStrdate()); map.put("sendStateStr", lsInfo.get(i).getOflag()); map.put("id", id); map.put("foodMenu", lsInfo.get(i).getFoodmenu()); // System.out.println(String.valueOf(lsInfo.get(i).getId()) // + " \tDDDDDD"); data.add(map); } } }
调用onResume方法时报错
public class Scores extends Activity { TextView tvPoints; TextView tvRecord; int record = 0; int points = 0; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); tvPoints = (TextView) findViewById(R.id.tvPoints); tvRecord = (TextView) findViewById(R.id.tvRecord); points = getIntent().getIntExtra("points", 0); record = getIntent().getIntExtra("record", 0); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); tvPoints.setText("Points: "+points); tvRecord.setText("Record: "+record); } } 代码,在使用onResume方法时报出NullPointerException错误。
关于OnResume的问题,求解答!
在另一个activity之中选择选项,获取boolean值,返回mainactivity后调用onResume,在onResume中用获取的boolean判断应该变成那种功能(两个功能在一个acivity里写的 重力感应和非重力感应)但是发现在默认功能没有问题。 但是选择另一种模式的时候,两种功能的函数都被调用了,就还留在默认模式下,求解决! 主要代码如下: public class MainActivity extends AppCompatActivity { private TextView textView; MyView mAnimView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout root = (LinearLayout) findViewById(R.id.root); final DrawView draw = new DrawView(this); draw.setMinimumWidth(300); draw.setMinimumHeight(500); root.addView(draw); } @Override public void onResume(){ SharedPreferences modle = getSharedPreferences("MODEL", Context.MODE_PRIVATE); boolean x = modle.getBoolean("model",true); Log.v("现在的boolean为:"," "+x); if(x==false){ LinearLayout root = (LinearLayout) findViewById(R.id.root); Log.v("执行了1:"," "+x); final MyView mAnimView = new MyView(this); root.addView(mAnimView); } else{ LinearLayout root = (LinearLayout) findViewById(R.id.root); final DrawView draw = new DrawView(this); draw.setMinimumWidth(300); draw.setMinimumHeight(500); root.addView(draw); Log.v("执行了2"," "+x); } super.onResume(); }
Android播放视频怎么进入页面后开始自动播放视频,需要在生命周期的哪个方法调用play方法
为什么在onStart或者onResume中调用play方法会报空指针错误?求大神说下思路。。。。。
关于arcgis for android 中的QueryTask这个例子的一些问题
在下面的源码中我主要有几点不明白 请各位大神能够帮助解答 第一、这个个例子中是什么时候开始对地图进行初始化的啊? 在xml文件中的url="http://www.arcgis.com/home/webmap/viewer.html?webmap=58e58acce685442aa4c73f91fbb3a387"这句话是对该地图进行初始化吗? 为什么不是一个mapserver啊? 代码片段,双击复制 <com.esri.android.map.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" url="http://www.arcgis.com/home/webmap/viewer.html?webmap=58e58acce685442aa4c73f91fbb3a387" > </com.esri.android.map.MapView> 第二 、对于代码中的以下部分不明白 if (source == mv && status == STATUS.INITIALIZED) { gl = new GraphicsLayer(); SimpleRenderer sr = new SimpleRenderer( new SimpleFillSymbol(Color.RED)); gl.setRenderer(sr);//设置渲染图形层 mv.addLayer(gl); boolean doQuery = false; for (Layer lv : mv.getLayers()) { if (lv instanceof ArcGISTiledMapServiceLayer) { ArcGISTiledMapServiceLayer tLayer = (ArcGISTiledMapServiceLayer) lv; if (tLayer.getUrl().equals(targetServerURL)) { doQuery = true; break; } } } 那个for循环中的的代码是用来干什么的啊? 以下是程序源码 package com.esri.arcgis.android.samples.querytask; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.esri.android.map.GraphicsLayer; import com.esri.android.map.Layer; import com.esri.android.map.MapView; import com.esri.android.map.ags.ArcGISTiledMapServiceLayer; import com.esri.android.map.event.OnStatusChangedListener; import com.esri.arcgis.android.samples.attributequery.R; import com.esri.core.geometry.Envelope; import com.esri.core.geometry.SpatialReference; import com.esri.core.map.FeatureSet; import com.esri.core.map.Graphic; import com.esri.core.renderer.SimpleRenderer; import com.esri.core.symbol.SimpleFillSymbol; import com.esri.core.tasks.ags.query.Query; import com.esri.core.tasks.ags.query.QueryTask; public class AttributeQuery extends Activity { /** Called when the activity is first created. */ MapView mv; GraphicsLayer gl; Graphic graphic; Graphic fillGraphic; Button querybt; String targetServerURL = "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Average_Household_Size/MapServer"; boolean blQuery = true; ProgressDialog progress; final static int HAS_RESULTS = 1; final static int NO_RESULT = 2; final static int CLEAR_RESULT = 3; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mv = (MapView) findViewById(R.id.map); mv.setOnStatusChangedListener(new OnStatusChangedListener() { private static final long serialVersionUID = 1L; public void onStatusChanged(Object source, STATUS status) { if (source == mv && status == STATUS.INITIALIZED) { gl = new GraphicsLayer(); SimpleRenderer sr = new SimpleRenderer( new SimpleFillSymbol(Color.RED)); gl.setRenderer(sr);//设置渲染图形层 mv.addLayer(gl); boolean doQuery = false; for (Layer lv : mv.getLayers()) { if (lv instanceof ArcGISTiledMapServiceLayer) { ArcGISTiledMapServiceLayer tLayer = (ArcGISTiledMapServiceLayer) lv; if (tLayer.getUrl().equals(targetServerURL)) { doQuery = true; break; } } } if (!doQuery) { Toast toast = Toast.makeText(AttributeQuery.this, "URL for query does not exist any more", Toast.LENGTH_LONG); toast.show(); } else { querybt.setEnabled(true); } } } }); querybt = (Button) findViewById(R.id.queryButton); querybt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (blQuery) { String targetLayer = targetServerURL.concat("/3"); String[] queryParams = { targetLayer, "AVGHHSZ_CY>3.5" }; AsyncQueryTask ayncQuery = new AsyncQueryTask(); ayncQuery.execute(queryParams); } else { gl.removeAll(); blQuery = true; querybt.setText("Average Household > 3.5"); } } }); } /** * * Query Task executes asynchronously. * */ private class AsyncQueryTask extends AsyncTask<String, Void, FeatureSet> { protected void onPreExecute() { progress = ProgressDialog.show(AttributeQuery.this, "", "Please wait....query task is executing"); } /** * First member in parameter array is the query URL; second member is * the where clause. */ protected FeatureSet doInBackground(String... queryParams) { if (queryParams == null || queryParams.length <= 1) return null; String url = queryParams[0]; Query query = new Query(); String whereClause = queryParams[1]; SpatialReference sr = SpatialReference.create(102100); query.setGeometry(new Envelope(-20147112.9593773, 557305.257274575, -6569564.7196889, 11753184.6153385)); query.setOutSpatialReference(sr); query.setReturnGeometry(true); query.setWhere(whereClause); QueryTask qTask = new QueryTask(url); FeatureSet fs = null; try { fs = qTask.execute(query); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return fs; } return fs; } protected void onPostExecute(FeatureSet result) { String message = "No result comes back"; if (result != null) { Graphic[] grs = result.getGraphics(); if (grs.length > 0) { gl.addGraphics(grs); message = (grs.length == 1 ? "1 result has " : Integer .toString(grs.length) + " results have ") + "come back"; } } progress.dismiss(); Toast toast = Toast.makeText(AttributeQuery.this, message, Toast.LENGTH_LONG); toast.show(); querybt.setText("Clear graphics"); blQuery = false; } } @Override protected void onPause() { super.onPause(); mv.pause(); } @Override protected void onResume() { super.onResume(); mv.unpause(); } }
android studio 中蓝牙BLE设备搜索
同样的代码在eclipse下能执行LeScanCallback的onLeScan方法 而到了android studio 中就不执行了 权限都加了,是不是android studio中还有配置别的东西? public class Blues { Context con; Blues.M_LeScanCallback_interface callback_interface; private BluetoothAdapter mBluetoothAdapter; private LeScanCallback mLeScanCallback = new LeScanCallback() { public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { Blues.this.callback_interface.get_address(device.getAddress()); } }; public Blues(Context con, Blues.M_LeScanCallback_interface callback_interface) { //在eclipse中 就加执行到这里 在android studio中就不会 BluetoothManager bluetoothManager = (BluetoothManager)con.getSystemService("bluetooth"); this.mBluetoothAdapter = bluetoothManager.getAdapter(); this.con = con; this.callback_interface = callback_interface; } public void scanLeDevice(boolean enable) { if(enable) { this.mBluetoothAdapter.startLeScan(this.mLeScanCallback); } else { this.mBluetoothAdapter.stopLeScan(this.mLeScanCallback); } } public interface M_LeScanCallback_interface { void get_address(String var1); } } //下面是activity中的调用 public class MainActivity extends Activity implements Blues.M_LeScanCallback_interface { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResume() { super.onResume(); Blues blues = new Blues(this, this); blues.scanLeDevice(true); } @Override public void get_address(String str) { Toast.makeText(getApplicationContext(), "" + str, Toast.LENGTH_SHORT).show(); } }
Android studio 调试提示MainActivity未在Manifest中声明
Manifest.xml: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.cheng.firstapp" andriod:versionCode="1" andriod:versionName="1.0"> <uses-sdk andriod:minSdkVersion="8" andriod:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:screenOrientation="landscape" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> MainActivity: package com.example.cheng.firstapp; import android.app.Activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; public class MainActivity extends AppCompatActivity {//AppCompatActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("Lifecycle","onCreate"); setContentView(R.layout.activity_main); } public boolean onCreateOptionMenu(Menu menu){ getMenuInflater().inflate(R.menu.menu_main,menu); return true; } public void onStart(){ super.onStart(); Log.d("lifestyle","onStart"); } public void onRestart(){ super.onStart(); Log.d("Lifestyle","onStart"); } public void onResume(){ super.onResume(); } public void onPause(){ super.onPause(); Log.d("Lifestyle","onPause"); } public void onStop(){ super.onStop(); Log.d("Lifecycle","onStop"); } public void onDestroy(){ super.onDestroy(); Log.d("Lifestyle","onDestroy"); } }
android用ActivityGroup实现tabhost一个tab多界面
tabhost界面 mTabHost = getTabHost(); //FileMianActivity mTabHost.addTab(mTabHost .newTabSpec(TabBindingConfig.FILE_PERSONAL) .setIndicator( TabBindingConfig.FILE_PERSONAL) .setContent(new Intent(TabActivity.this, FileMianActivity.class))); //ShareMainActivity mTabHost.addTab(mTabHost .newTabSpec(TabBindingConfig.SHARE_KNOWLEDGE) .setIndicator( TabBindingConfig.SHARE_KNOWLEDGE) .setContent(new Intent(TabActivity.this, GropuActivity.class))); //TransferMianActivity mTabHost.addTab(mTabHost .newTabSpec(TabBindingConfig.TRANSFER) .setIndicator( TabBindingConfig.TRANSFER) .setContent(new Intent(TabActivity.this, TransferMianActivity.class))); //MoreMianActivity mTabHost.addTab(mTabHost .newTabSpec(TabBindingConfig.MORE) .setIndicator( TabBindingConfig.MORE) .setContent( new Intent(TabActivity.this, MoreMianActivity.class))); tabhost点击事件 switch (view.getId()) { case R.id.main_layout1: mImageview1.setImageResource(R.drawable.tab_fileclick); mTextview1.setTextColor(Color.parseColor("#3788de")); mTextviewIcon1.setVisibility(View.INVISIBLE); mTabHost.setCurrentTabByTag(TabBindingConfig.FILE_PERSONAL); break; case R.id.main_layout2: mImageview2.setImageResource(R.drawable.tab_shareclick); mTextview2.setTextColor(Color.parseColor("#3788de")); mTextviewIcon2.setVisibility(View.INVISIBLE); // mTabHost.setCurrentTab(1); mTabHost.setCurrentTabByTag(TabBindingConfig.SHARE_KNOWLEDGE); break; case R.id.main_layout3: mImageview3.setImageResource(R.drawable.tab_transferclick); mTextview3.setTextColor(Color.parseColor("#3788de")); mTextviewIcon3.setVisibility(View.INVISIBLE); mTabHost.setCurrentTabByTag(TabBindingConfig.TRANSFER); break; case R.id.main_layout4: mImageview4.setImageResource(R.drawable.tab_moreclick); mTextview4.setTextColor(Color.parseColor("#3788de")); mImagIcon4.setVisibility(View.INVISIBLE); mTabHost.setCurrentTabByTag(TabBindingConfig.MORE); break; default: break; activityGroup绑定 public static ActivityGroup group; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); group = this; } @Override public void onBackPressed() { // TODO Auto-generated method stub // super.onBackPressed(); //把后退事件交给子Activity处理 group.getLocalActivityManager() .getCurrentActivity().onBackPressed(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //把界面切换放到onResume方法中是因为,从其他选项卡切换回来时, //调用搞得是onResume方法 //要跳转的界面 Intent intent = new Intent(this, ShareMainActivity.class). addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //把一个Activity转换成一个View Window w = group.getLocalActivityManager().startActivity("ShareMainActivity",intent); View view = w.getDecorView(); //把View添加大ActivityGroup中 group.setContentView(view); } 把第二个tab切换绑定成activitygroup跳转,但是不能实现 求各位大神指点,需要的话我可以把工程发给你
求解数据的获取以及在利用适配器显示问题时出现的界面闪屏问题
设置了一个从网上获取数据的方法(比如getCourse()),然后将这个方法放置到onResume()方法中。为什么每次listview的显示都会出现问题。(界面每次都要回到初始界面,然后才会显示出过去到数据的界面。)
【安卓】进入显示所有便签的界面就出错,是怎么回事啊
我在主页面创建的新建便签和显示全部便签的两个按钮, 点击新建便签的按钮就进入编辑新便签的界面, 点击全部便签进入一个显示所有便签的界面,但就在点击全部便签时出错了(全部便签里是一个列表视图,在里面点击一条便签进入编辑) 这是全部便签的代码 ``` public class All_note extends ListActivity { public final static String EXTRA_NOTE_ID = "com.example.android.notepad.NOTEID"; private NoteDbHelper _db = null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.all_note); getListView().setOnCreateContextMenuListener(this); _db = new NoteDbHelper(this); String[] dataColumns = new String[] {"title", "content"}; int[] viewIds = new int[] { R.id.title, R.id.summary }; Cursor cursor = _db.getAllNotesCursor(); SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, // The Context for the ListView R.layout.notelist_item, // Points to the XML for a list item cursor, // The cursor to get items from dataColumns, viewIds ); setListAdapter(adapter); } private void reloadNote() { SimpleCursorAdapter adapter = (SimpleCursorAdapter)getListAdapter(); if (adapter != null) { Cursor cursor = _db.getAllNotesCursor(); adapter.swapCursor(cursor); } } @Override public void onResume() { super.onResume(); reloadNote(); } protected void onListItemClick(ListView l, View v, int position, long id) { Intent intent = new Intent(this, NewNote.class); intent.putExtra(EXTRA_NOTE_ID, (int)id); startActivity(intent); } public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { // Inflate menu from XML resource MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.list_context_menu, menu); } public boolean onContextItemSelected(MenuItem item) { // The data from the menu item. AdapterView.AdapterContextMenuInfo info; try { // Casts the data object in the item into the type for AdapterView objects. info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { // If the object can't be cast, logs an error Log.e("SimpleNotePad", "bad menuInfo", e); // Triggers default processing of the menu item. return false; } /* * Gets the menu item's ID and compares it to known actions. */ switch (item.getItemId()) { case R.id.context_delete: int noteId = (int)info.id; if (noteId > 0) _db.deleteNote(noteId); reloadNote(); // Returns to the caller and skips further processing. return true; default: return super.onContextItemSelected(item); } } } ``` 主页面代码 ``` public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView img1=(ImageView)findViewById(R.id.setButton0); img1.setOnClickListener(new ImageView.OnClickListener(){ public void onClick(View V){ Intent intent=new Intent(MainActivity.this,SetActivity.class); startActivity(intent); } }); ImageView img2=(ImageView)findViewById(R.id.newButton2); img2.setOnClickListener(new ImageView.OnClickListener(){ public void onClick(View V){ Intent intent=new Intent(MainActivity.this,NewNote.class); startActivity(intent); } }); ImageView img3=(ImageView)findViewById(R.id.allButton1); img3.setOnClickListener(new ImageView.OnClickListener(){ public void onClick(View V){ Intent intent=new Intent(MainActivity.this,All_note.class); startActivity(intent); } }); } } ``` 配置文件 ``` <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar" > <activity android:name=".Welcome" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="cn.itcast.one.GuideActivity"></activity> <activity android:name="cn.itcast.one.MainActivity" android:label="@string/app_name"></activity> <activity android:name="cn.itcast.set.SetActivity"></activity> <activity android:name="cn.itcast.one.NewNote"></activity> <activity android:name="cn.itcast.one.All_note"></activity> </application> ``` 这是Logcat ![图片说明](https://img-ask.csdn.net/upload/201610/21/1477015059_906672.png) ![图片说明](https://img-ask.csdn.net/upload/201610/21/1477015076_211271.png)
求一个登录后改变前一个界面数据的思路
1 登录后把信息拿下来放到sp中, 然后在onresume中拿到数据放到页面中 2对页面进行刷新 我只想到了这两种思路。不知道开发过程中具体思路是不是这样? 希望给我一个思路
unity vuforia for android 奇怪的黑屏问题
各路道友、大神: unity和android结合,启动不黑屏。但跳转其他activity,finish()后黑屏。 各种google、百度,只有说启动黑屏的解决办法。 自己用了种笨办法,在activity的onPause和onResume不执行unityplayer的生命周期。 这样很消耗性能! 但是,在这个activity中,打开另一个Bactivity,然后在相册选取图片,再返回到activity中,又出现黑屏。 求各路道友赐教啊! unity IDE 5.2.2f,vuforia 5.0.10
android listView自动更新与实践处理问题
要做一个列表,显示人员信息的 每一个列表项就是一个添加的用户 单击每一个列表项就跳转到另一个activity用于查看该用户的信息 顶部还有一个添加的按钮跳转到添加的activity 现在问题是 我在添加activity中添加了一个用户,返回到列表时 如何能够自动更新列表中的数据 之前试过在列表activity中覆写onResume方法,在里面将adapter重新实例化,并且重新添加到listView中 不过问题是新添加的列表项无法跳转到信息显示的activity上,后台报错,空指向异常,其他的列表项却可以跳转。 也试过重新设置listView的OnItemClickListener,可是还是不行。 我想问一下有没有其他更好的方法在跳转回来后自动更新listView。 还有就是如何解决上面那个空指向的问题。 求高手指点一二
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问