當前位置:首頁 » 安卓系統 » android61

android61

發布時間: 2023-01-15 12:13:17

Ⅰ android怎麼從引導頁進入主頁

1 import android.app.Activity;
2 import android.content.Intent;
3 import android.content.SharedPreferences;
4 import android.content.SharedPreferences.Editor;
5 import android.os.Bundle;
6 import android.os.Handler;
7
8 /** 歡迎界面 */
9 public class WelcomeAct extends Activity {
10
11 private boolean isFirstIn = false;
12 private static final int TIME = 2000;
13 private static final int GO_HOME = 1000;
14 private static final int GO_GUIDE = 1001;
15
16 private Handler mHandler = new Handler() {
17 public void handleMessage(android.os.Message msg) {
18 switch (msg.what) {
19 // 跳入主界面
20 case GO_HOME:
21 goHome();
22 break;
23 // 跳入引導頁
24 case GO_GUIDE:
25 goGuide();
26 break;
27 }
28 };
29 };
30
31 @Override
32 protected void onCreate(Bundle savedInstanceState) {
33 super.onCreate(savedInstanceState);
34 setContentView(R.layout.welcome);
35 init();
36 }
37
38 private void init() {
39 SharedPreferences perPreferences = getSharedPreferences("jike",
40 MODE_PRIVATE);
41 isFirstIn = perPreferences.getBoolean("isFirstIn", true);
42 if (!isFirstIn) {
43 mHandler.sendEmptyMessageDelayed(GO_HOME, TIME);
44 } else {
45 mHandler.sendEmptyMessageDelayed(GO_GUIDE, TIME);
46 Editor editor = perPreferences.edit();
47 editor.putBoolean("isFirstIn", false);
48 editor.commit();
49 }
50 }
51
52 private void goHome() {
53 Intent i = new Intent(WelcomeAct.this, MainActivity.class);
54 startActivity(i);
55 finish();
56 }
57
58 private void goGuide() {
59 Intent i = new Intent(WelcomeAct.this, Guide.class);
60 startActivity(i);
61 finish();
62 }
63
64 }

1 import java.util.ArrayList;
2 import java.util.List;
3 import android.app.Activity;
4 import android.content.Intent;
5 import android.os.Bundle;
6 import android.support.v4.view.ViewPager;
7 import android.support.v4.view.ViewPager.OnPageChangeListener;
8 import android.view.LayoutInflater;
9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.ImageView;
13
14 /** 引導頁 */
15 public class Guide extends Activity implements OnPageChangeListener {
16
17 private ViewPager vp;
18 private ViewPagerAdapter vpAdapter;
19 private List<View> views;
20 private ImageView[] dots;
21 private int[] ids = { R.id.iv1, R.id.iv2, R.id.iv3 };
22 private Button start_btn;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.guide);
28 initViews();
29 initDots();
30 }
31
32 private void initViews() {
33 LayoutInflater inflater = LayoutInflater.from(this);
34
35 views = new ArrayList<View>();
36 views.add(inflater.inflate(R.layout.one, null));
37 views.add(inflater.inflate(R.layout.two, null));
38 views.add(inflater.inflate(R.layout.three, null));
39
40 vpAdapter = new ViewPagerAdapter(views, this);
41 vp = (ViewPager) findViewById(R.id.viewpager);
42 vp.setAdapter(vpAdapter);
43 // 下標從0開始,所以第三個頁面是get(2)。
44 start_btn = (Button) views.get(2).findViewById(R.id.start_btn);
45 start_btn.setOnClickListener(new OnClickListener() {
46 @Override
47 public void onClick(View arg0) {
48 Intent i = new Intent(Guide.this, MainActivity.class);
49 startActivity(i);
50 finish();
51 }
52 });
53 vp.setOnPageChangeListener(this);
54 }
55
56 /** 循環設置點 */
57 private void initDots() {
58 dots = new ImageView[views.size()];
59 for (int i = 0; i < views.size(); i++) {
60 dots[i] = (ImageView) findViewById(ids[i]);
61 }
62 }
63
64 @Override /** 滑動狀態改變的時候 */
65 public void onPageScrollStateChanged(int arg0) {
66 // TODO Auto-generated method stub
67 }
68
69 @Override /** 當頁面被滑動時候調用 */
70 public void onPageScrolled(int arg0, float arg1, int arg2) {
71 // TODO Auto-generated method stub
72 }
73
74 @Override /** 當前新的頁面被選中時調用 */
75 public void onPageSelected(int arg0) {
76 for (int i = 0; i < ids.length; i++) {
77 if (arg0 == i) {
78 // 亮點
79 dots[i].setImageResource(R.drawable.login_point_selected);
80 } else {
81 // 暗點
82 dots[i].setImageResource(R.drawable.login_point);
83 }
84 }
85 }
86
87 }
1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent" >
5
6 <android.support.v4.view.ViewPager
7 android:id="@+id/viewpager"
8 android:layout_width="fill_parent"
9 android:layout_height="fill_parent"
10 android:background="#00000000" >
11 </android.support.v4.view.ViewPager>
12
13 <!-- 底部三個點 -->
14 <LinearLayout
15 android:id="@+id/ll"
16 android:layout_width="fill_parent"
17 android:layout_height="wrap_content"
18 android:layout_alignParentBottom="true"
19 android:gravity="center_horizontal"
20 android:orientation="horizontal" >
21 <!-- 選中點 -->
22 <ImageView
23 android:id="@+id/iv1"
24 android:layout_width="wrap_content"
25 android:layout_height="wrap_content"
26 android:src="@drawable/login_point_selected" />
27 <!-- 未選中點 -->
28 <ImageView
29 android:id="@+id/iv2"
30 android:layout_width="wrap_content"
31 android:layout_height="wrap_content"
32 android:src="@drawable/login_point" />
33 <!-- 未選中點 -->
34 <ImageView
35 android:id="@+id/iv3"
36 android:layout_width="wrap_content"
37 android:layout_height="wrap_content"
38 android:src="@drawable/login_point" />
39 </LinearLayout>
40
41 </RelativeLayout>

安卓手機充不進去電,插上時顯示手機在充電,但是電量一直是61% 就是不增加!系統也換了,還是不行,咋辦

可能是因為電池的記憶效應,即長期不完全充放電導致的,記憶效應可以消除,但操作復雜危險,不建議,建議可更換電池試試!

Ⅲ 61英寸的手機多大

61英寸的手機是13.5cm 。

61英寸手機長:13.5cm寬:7.6cm,1英寸(in)=2.54厘米,所以6.1英寸=15.494厘米,手機的英寸是指對角線的長短,也就是6.1英寸手機屏幕的對角線長15.494厘米。

手機的操作系統:

安卓

Android是Google於2007年11月5日宣布的基於Linux平台的開源手機操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成。

Android一詞的本義指「機器人」。同時Android的系統架構也和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。

Android在正式發行之前,最開始擁有兩個內部測試版本,並且以著名的機器人名稱來對其進行命名。

Ⅳ 手機調試Android程序出異常時不列印堆棧信息

列印堆棧是調試的常用方法,一般在系統異常時,我們可以將異常情況下的堆棧列印出來,這樣十分方便錯誤查找。實際上還有另外一個非常有用的功能:分析代碼的行為。android代碼太過龐大復雜了,完全的靜態分析經常是無從下手,因此通過列印堆棧的動態分析也十分必要。

Android列印堆棧的方法,簡單歸類一下
1. zygote的堆棧mp
實際上這個可以同時mp java線程及native線程的堆棧,對於java線程,java堆棧和native堆棧都可以得到。
使用方法很簡單,直接在adb shell或串口中輸入:
[plain] view plain
kill -3 <pid>
輸出的trace會保存在 /data/anr/traces.txt文件中。這個需要注意,如果沒有 /data/anr/這個目錄或/data/anr/traces.txt這個文件,需要手工創建一下,並設置好讀寫許可權。
如果需要在代碼中,更容易控制堆棧的輸出時機,可以用以下命令獲取zygote的core mp:
[java] view plain
Process.sendSignal(pid, Process.SIGNAL_QUIT);
原理和命令行是一樣的。
不過需要注意兩點:
adb shell可能會沒有許可權,需要root。
android 4.2中關閉了native thread的堆棧列印,詳見 dalvik/vm/Thread.cpp的mpNativeThread方法:
[cpp] view plain
dvmPrintDebugMessage(target,
"\"%s\" sysTid=%d nice=%d sched=%d/%d cgrp=%s\n",
name, tid, getpriority(PRIO_PROCESS, tid),
schedStats.policy, schedStats.priority, schedStats.group);
mpSchedStat(target, tid);
// Temporarily disabled collecting native stacks from non-Dalvik
// threads because sometimes they misbehave.
//dvmDumpNativeStack(target, tid);
Native堆棧的列印被關掉了!不過對於大多數情況,可以直接將這個注釋打開。

2. debuggerd的堆棧mp
debuggerd是android的一個daemon進程,負責在進程異常出錯時,將進程的運行時信息mp出來供分析。debuggerd生 成的coremp數據是以文本形式呈現,被保存在 /data/tombstone/ 目錄下(名字取的也很形象,tombstone是墓碑的意思),共可保存10個文件,當超過10個時,會覆蓋重寫最早生成的文件。從4.2版本開 始,debuggerd同時也是一個實用工具:可以在不中斷進程執行的情況下列印當前進程的native堆棧。使用方法是:
[plain] view plain
debuggerd -b <pid>
這可以協助我們分析進程執行行為,但最最有用的地方是:它可以非常簡單的定位到native進程中鎖死或錯誤邏輯引起的死循環的代碼位置。

3. java代碼中列印堆棧
Java代碼列印堆棧比較簡單, 堆棧信息獲取和輸出,都可以通過Throwable類的方法實現。目前通用的做法是在java進程出現需要注意的異常時,列印堆棧,然後再決定退出或挽救。通常的方法是使用exception的printStackTrace()方法:
[java] view plain
try {
...
} catch (RemoteException e) {
e.printStackTrace();
...
}
當然也可以只列印堆棧不退出,這樣就比較方便分析代碼的動態運行情況。Java代碼中插入堆棧列印的方法如下:
[java] view plain
Log.d(TAG,Log.getStackTraceString(new Throwable()));

4. C++代碼中列印堆棧
C++也是支持異常處理的,異常處理庫中,已經包含了獲取backtrace的介面,Android也是利用這個介面來列印堆棧信息的。在Android的C++中,已經集成了一個工具類CallStack,在libutils.so中。使用方法:
[cpp] view plain
#include <utils/CallStack.h>
...
CallStack stack;
stack.update();
stack.mp();
使用方式比較簡單。目前Andoid4.2版本已經將相關信息解析的很到位,符號表查找,demangle,偏移位置校正都做好了。
[plain] view plain

5. C代碼中列印堆棧
C代碼,尤其是底層C庫,想要看到調用的堆棧信息,還是比較麻煩的。 CallStack肯定是不能用,一是因為其實C++寫的,需要重新封裝才能在C中使用,二是底層庫反調上層庫的函數,會造成鏈接器循環依賴而無法鏈接。 不過也不是沒有辦法,可以通過android工具類CallStack實現中使用的unwind調用及符號解析函數來處理。
這里需要注意的是,為解決鏈接問題,最好使用dlopen方式,查找需要用到的介面再直接調用,這樣會比較簡單。如下為相關的實現代碼,只需要在要 列印的文件中插入此部分代碼,然後調用getCallStack()即可,無需包含太多的頭文件和修改Android.mk文件:
[cpp] view plain
#define MAX_DEPTH 31
#define MAX_BACKTRACE_LINE_LENGTH 800
#define PATH "/system/lib/libcorkscrew.so"

typedef ssize_t (*unwindFn)(backtrace_frame_t*, size_t, size_t);
typedef void (*unwindSymbFn)(const backtrace_frame_t*, size_t, backtrace_symbol_t*);
typedef void (*unwindSymbFreeFn)(backtrace_symbol_t*, size_t);

static void *gHandle = NULL;

static int getCallStack(void){
ssize_t i = 0;
ssize_t result = 0;
ssize_t count;
backtrace_frame_t mStack[MAX_DEPTH];
backtrace_symbol_t symbols[MAX_DEPTH];

unwindFn unwind_backtrace = NULL;
unwindSymbFn get_backtrace_symbols = NULL;
unwindSymbFreeFn free_backtrace_symbols = NULL;

// open the so.
if(gHandle == NULL) gHandle = dlopen(PATH, RTLD_NOW);

// get the interface for unwind and symbol analyse
if(gHandle != NULL) unwind_backtrace = (unwindFn)dlsym(gHandle, "unwind_backtrace");
if(gHandle != NULL) get_backtrace_symbols = (unwindSymbFn)dlsym(gHandle, "get_backtrace_symbols");
if(gHandle != NULL) free_backtrace_symbols = (unwindSymbFreeFn)dlsym(gHandle, "free_backtrace_symbols");

if(!gHandle ||!unwind_backtrace ||!get_backtrace_symbols || !free_backtrace_symbols ){
ALOGE("Error! cannot get unwind info: handle:%p %p %p %p",
gHandle, unwind_backtrace, get_backtrace_symbols, free_backtrace_symbols );
return result;
}

count= unwind_backtrace(mStack, 1, MAX_DEPTH);
get_backtrace_symbols(mStack, count, symbols);

for (i = 0; i < count; i++) {
char line[MAX_BACKTRACE_LINE_LENGTH];

const char* mapName = symbols[i].map_name ? symbols[i].map_name : "<unknown>";
const char* symbolName =symbols[i].demangled_name ? symbols[i].demangled_name : symbols[i].symbol_name;
size_t fieldWidth = (MAX_BACKTRACE_LINE_LENGTH - 80) / 2;

if (symbolName) {
uint32_t pc_offset = symbols[i].relative_pc - symbols[i].relative_symbol_addr;
if (pc_offset) {
snprintf(line, MAX_BACKTRACE_LINE_LENGTH, "#%02d pc %08x %.*s (%.*s+%u)",
i, symbols[i].relative_pc, fieldWidth, mapName,
fieldWidth, symbolName, pc_offset);
} else {
snprintf(line, MAX_BACKTRACE_LINE_LENGTH, "#%02d pc %08x %.*s (%.*s)",
i, symbols[i].relative_pc, fieldWidth, mapName,
fieldWidth, symbolName);
}
} else {
snprintf(line, MAX_BACKTRACE_LINE_LENGTH, "#%02d pc %08x %.*s",
i, symbols[i].relative_pc, fieldWidth, mapName);
}

ALOGD("%s", line);
}

free_backtrace_symbols(symbols, count);

return result;
}
對sched_policy.c的堆棧調用分析如下,注意具體是否要列印,在哪裡列印,還可以通過pid、uid、property等來控制一下,這樣就不會被淹死在trace的汪洋大海中。
[plain] view plain
D/SchedPolicy( 1350): #00 pc 0000676c /system/lib/libcutils.so
D/SchedPolicy( 1350): #01 pc 00006b3a /system/lib/libcutils.so (set_sched_policy+49)
D/SchedPolicy( 1350): #02 pc 00010e82 /system/lib/libutils.so (androidSetThreadPriority+61)
D/SchedPolicy( 1350): #03 pc 00068104 /system/lib/libandroid_runtime.so (android_os_Process_setThreadPriority(_JNIEnv*, _jobject*, int, int)+7)
D/SchedPolicy( 1350): #04 pc 0001e510 /system/lib/libdvm.so (dvmPlatformInvoke+112)
D/SchedPolicy( 1350): #05 pc 0004d6aa /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+417)
D/SchedPolicy( 1350): #06 pc 00027920 /system/lib/libdvm.so
D/SchedPolicy( 1350): #07 pc 0002b7fc /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
D/SchedPolicy( 1350): #08 pc 00060c30 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+271)
D/SchedPolicy( 1350): #09 pc 0004cd34 /system/lib/libdvm.so
D/SchedPolicy( 1350): #10 pc 00049382 /system/lib/libandroid_runtime.so
D/SchedPolicy( 1350): #11 pc 00065e52 /system/lib/libandroid_runtime.so
D/SchedPolicy( 1350): #12 pc 0001435e /system/lib/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+57)
D/SchedPolicy( 1350): #13 pc 00016f5a /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)+513)
D/SchedPolicy( 1350): #14 pc 00017380 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+183)
D/SchedPolicy( 1350): #15 pc 0001b160 /system/lib/libbinder.so
D/SchedPolicy( 1350): #16 pc 00011264 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+111)
D/SchedPolicy( 1350): #17 pc 000469bc /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+63)
D/SchedPolicy( 1350): #18 pc 00010dca /system/lib/libutils.so
D/SchedPolicy( 1350): #19 pc 0000e3d8 /system/lib/libc.so (__thread_entry+72)
D/SchedPolicy( 1350): #20 pc 0000dac4 /system/lib/libc.so (pthread_create+160)
D/SchedPolicy( 1350): #00 pc 0000676c /system/lib/libcutils.so
D/SchedPolicy( 1350): #01 pc 00006b3a /system/lib/libcutils.so (set_sched_policy+49)
D/SchedPolicy( 1350): #02 pc 00016f26 /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)+461)
D/SchedPolicy( 1350): #03 pc 00017380 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+183)
D/SchedPolicy( 1350): #04 pc 0001b160 /system/lib/libbinder.so
D/SchedPolicy( 1350): #05 pc 00011264 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+111)
D/SchedPolicy( 1350): #06 pc 000469bc /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+63)
D/SchedPolicy( 1350): #07 pc 00010dca /system/lib/libutils.so
D/SchedPolicy( 1350): #08 pc 0000e3d8 /system/lib/libc.so (__thread_entry+72)
D/SchedPolicy( 1350): #09 pc 0000dac4 /system/lib/libc.so (pthread_create+160)

6. 其它堆棧信息查詢

Ⅳ Android keycode

appium擴展提供了pressKeyCode()方法。該方法Android特有。

方法:

pressKeyCode()

發送一個鍵碼的操作。需要一個入參。

driver.pressKeyCode(29);// 字母「a」

電話鍵

KEYCODE_CALL 撥號鍵 5

KEYCODE_ENDCALL 掛機鍵 6

KEYCODE_HOME 按鍵Home 3

KEYCODE_MENU 菜單鍵 82

KEYCODE_BACK 返回鍵 4

KEYCODE_SEARCH 搜索鍵 84

KEYCODE_CAMERA 拍照鍵 27

KEYCODE_FOCUS 拍照對焦鍵 80

KEYCODE_POWER 電源鍵 26

KEYCODE_NOTIFICATION 通知鍵 83

KEYCODE_MUTE 話筒靜音鍵 91

KEYCODE_VOLUME_MUTE 揚聲器靜音鍵 164

KEYCODE_VOLUME_UP 音量增加鍵 24

KEYCODE_VOLUME_DOWN 音量減小鍵 25

控制鍵

KEYCODE_ENTER 回車鍵 66

KEYCODE_ESCAPE ESC鍵 111

KEYCODE_DPAD_CENTER 導航鍵 確定鍵 23

KEYCODE_DPAD_UP 導航鍵 向上 19

KEYCODE_DPAD_DOWN 導航鍵 向下 20

KEYCODE_DPAD_LEFT 導航鍵 向左 21

KEYCODE_DPAD_RIGHT 導航鍵 向右 22

KEYCODE_MOVE_HOME 游標移動到開始鍵 122

KEYCODE_MOVE_END 游標移動到末尾鍵 123

KEYCODE_PAGE_UP 向上翻頁鍵 92

KEYCODE_PAGE_DOWN 向下翻頁鍵 93

KEYCODE_DEL 退格鍵 67

KEYCODE_FORWARD_DEL 刪除鍵 112

KEYCODE_INSERT 插入鍵 124

KEYCODE_TAB Tab鍵 61

KEYCODE_NUM_LOCK 小鍵盤鎖 143

KEYCODE_CAPS_LOCK 大寫鎖定鍵 115

KEYCODE_BREAK Break/Pause鍵 121

KEYCODE_SCROLL_LOCK 滾動鎖定鍵 116

KEYCODE_ZOOM_IN 放大鍵 168

KEYCODE_ZOOM_OUT 縮小鍵 169

組合鍵

KEYCODE_ALT_LEFT Alt+Left

KEYCODE_ALT_RIGHT Alt+Right

KEYCODE_CTRL_LEFT Control+Left

KEYCODE_CTRL_RIGHT Control+Right

KEYCODE_SHIFT_LEFT Shift+Left

KEYCODE_SHIFT_RIGHT Shift+Right

基本

KEYCODE_0 按鍵'0' 7

KEYCODE_1 按鍵'1' 8

KEYCODE_2 按鍵'2' 9

KEYCODE_3 按鍵'3' 10

KEYCODE_4 按鍵'4' 11

KEYCODE_5 按鍵'5' 12

KEYCODE_6 按鍵'6' 13

KEYCODE_7 按鍵'7' 14

KEYCODE_8 按鍵'8' 15

KEYCODE_9 按鍵'9' 16

KEYCODE_A 按鍵'A' 29

KEYCODE_B 按鍵'B' 30

KEYCODE_C 按鍵'C' 31

KEYCODE_D 按鍵'D' 32

KEYCODE_E 按鍵'E' 33

KEYCODE_F 按鍵'F' 34

KEYCODE_G 按鍵'G' 35

KEYCODE_H 按鍵'H' 36

KEYCODE_I 按鍵'I' 37

KEYCODE_J 按鍵'J' 38

KEYCODE_K 按鍵'K' 39

KEYCODE_L 按鍵'L' 40

KEYCODE_M 按鍵'M' 41

KEYCODE_N 按鍵'N' 42

KEYCODE_O 按鍵'O' 43

KEYCODE_P 按鍵'P' 44

KEYCODE_Q 按鍵'Q' 45

KEYCODE_R 按鍵'R' 46

KEYCODE_S 按鍵'S' 47

KEYCODE_T 按鍵'T' 48

KEYCODE_U 按鍵'U' 49

KEYCODE_V 按鍵'V' 50

KEYCODE_W 按鍵'W' 51

KEYCODE_X 按鍵'X' 52

KEYCODE_Y 按鍵'Y' 53

KEYCODE_Z 按鍵'Z' 54

Ⅵ android viewmodel取消線程

在Activity開啟的子線程並不會自動隨Activity的destroy而關閉,所以必須手動去關閉子線程或者通過boolean的方式讓子線程結束運行。開啟的子線程有for循環的要更加註意。

1 package com.lsw;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.os.Handler;
6 import android.os.Message;
7 import android.util.Log;
8 public class ThreadDemoActivity extends Activity {
9 private static final String TAG = "ThreadDemo";
10 private int count = 0;
11 private Handler mHandler = new MyHandler();
12 boolean stopThread=false;
13
14 private Runnable mRunnable = new Runnable() {
15
16 public void run() {
17
18 while (!stopThread)
19 {
20 count++;
21 try
22 {
23 Thread.sleep(2000);
24 }
25 catch (InterruptedException e)
26 {
27 // TODO Auto-generated catch block
28 e.printStackTrace();
29 }
30
31 //雖然Message的構造函數是public的,但是最好是使用Message.obtain( )或Handler.obtainMessage( )函數來獲取Message對象,因為Message的實現中包含了回收再利用的機制,可以提供效率。
32 Message message=mHandler.obtainMessage();
33 message.what=0;
34 message.obj=count;
35 mHandler.sendMessage(message);
36 }
37 }
38 };
39
40 @Override
41 public void onCreate(Bundle savedInstanceState) {
42 super.onCreate(savedInstanceState);
43 setContentView(R.layout.main);
44 //開啟子線程
45 new Thread(mRunnable).start();
46 }
47
48 protected void onDestroy() {
49 System.out.println("-----------onDestroy------");
50 stopThread=true;
51 super.onDestroy();
52 };
53
54 class MyHandler extends Handler{
55
56 @Override
57 public void handleMessage(Message msg)
58 {
59 // TODO Auto-generated method stub
60 Log.e(TAG, Thread.currentThread().getName() + " " +msg.obj);
61 setTitle("" +msg.obj);
62 }
63 }
64
65 }

Ⅶ android 反編譯出來的label61是什麼意思啊

反編譯出來的很多class代碼,裡面的變數的名稱都不是原來的名稱,是內存執行程序段的時候的標識符,很多都是很亂了。,你要看class的context才知道

Ⅷ android 鏤空遮罩怎麼用

看到一本電子雜志上有遮罩層的效果,感覺很漂亮,以為很麻煩,搜索了很多關於android遮罩層的,也沒有得出一點思路,原來就是一個透明的效果,然後上面彈出的控制項是透明或者半透明之類的,可以選擇顏色,還是#ARBG,其中A就是傳說中的透明色的值(可以根據需要設置透明的效果),廢話不多說了,發一個簡單的Demo吧,是我山寨的那本雜志的效果:(由於雜志內容主要是圖片,彈出層才是給出的文字信息,所以我猜測是用Gallery顯示的雜志內容)
xml布局文件:

[c-sharp] view plainprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:id="@+id/layout"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent"
06. >
07. <Gallery
08. android:id="@+id/showGallery"
09. android:layout_width="fill_parent"
10. android:layout_height="fill_parent"
11. android:spacing="0dip"
12. />
13. <RelativeLayout
14. android:orientation="horizontal"
15. android:layout_width="fill_parent"
16. android:layout_height="wrap_content"
17. android:layout_gravity="bottom"
18. android:background="#86222222"
19. >
20. <TextView
21. android:id="@+id/titleTextView"
22. android:layout_width="wrap_content"
23. android:layout_height="wrap_content"
24. android:layout_toRightOf="@id/secondKillButton"
25. android:textColor="#ff0000"
26. />
27. <Button
28. android:id="@+id/unfoldButton"
29. android:layout_width="wrap_content"
30. android:layout_height="wrap_content"
31. android:layout_alignParentRight="true"
32. android:text="展開"
33. />
34. </RelativeLayout>
35.</FrameL<textarea name="code" class="xhtml" cols="50" rows="15"><?xml version="1.0" encoding="utf-8"?>
36.<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
37. android:id="@+id/layout"
38. android:layout_width="fill_parent"
39. android:layout_height="fill_parent"
40. >
41. <Gallery
42. android:id="@+id/showGallery"
43. android:layout_width="fill_parent"
44. android:layout_height="fill_parent"
45. android:spacing="0dip"
46. />
47. <RelativeLayout
48. android:orientation="horizontal"
49. android:layout_width="fill_parent"
50. android:layout_height="wrap_content"
51. android:layout_gravity="bottom"
52. android:background="#86222222"
53. >
54. <TextView
55. android:id="@+id/titleTextView"
56. android:layout_width="wrap_content"
57. android:layout_height="wrap_content"
58. android:layout_toRightOf="@id/secondKillButton"
59. android:textColor="#ff0000"
60. />
61. <Button
62. android:id="@+id/unfoldButton"
63. android:layout_width="wrap_content"
64. android:layout_height="wrap_content"
65. android:layout_alignParentRight="true"
66. android:text="展開"
67. />
68. </RelativeLayout>
69.</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Gallery
android:id="@+id/showGallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:spacing="0dip"
/>
<RelativeLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#86222222"
>
<TextView
android:id="@+id/titleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/secondKillButton"
android:textColor="#ff0000"
/>
<Button
android:id="@+id/unfoldButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="展開"
/>
</RelativeLayout>
</FrameL<textarea name="code" class="xhtml" cols="50" rows="15"><?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Gallery
android:id="@+id/showGallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:spacing="0dip"
/>
<RelativeLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#86222222"
>
<TextView
android:id="@+id/titleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/secondKillButton"
android:textColor="#ff0000"
/>
<Button
android:id="@+id/unfoldButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="展開"
/>
</RelativeLayout>
</FrameLayout>

Ⅸ android字元串轉換成16進制怎麼轉

android字元串轉換成16進制,參考如下內容:
/**
* 字元串轉換成十六進制字元串
* @param String str 待轉換的ASCII字元串
* @return String 每個Byte之間空格分隔,如: [61 6C 6B]
*/
public static String str2HexStr(String str)
{

char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit;

for (int i = 0; i < bs.length; i++)
{
bit = (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
return sb.toString().trim();
}

Ⅹ 華為榮耀V8安卓6.0可以連接XBOXONE手柄嗎

華為榮耀V8安卓6.0可以連接XBOXONE手柄嗎?作為全球也許是最知名的開源操作系統,安卓(Android)的成功可以說是有目共睹——畢竟,在持續發展了九個大版本之後,如今的它已經占據了絕大多數智能手機的市場份額,在兼容性、穩定性上的表現基本上已經無可挑剔了。
然而,或許並不為人所知的是,即便是這樣的安卓操作系統,在它的內部,依然存在著大量或大或小的Bug(wiki:程序錯誤),有些甚至還是多年都未能解決的「歷史遺留問題」。比如說,就在最近,一則來自知名開發網站XDA的、原本應該只有專業開發者才會感興趣的安卓Bug信息,就意外地吸引了大眾用戶的關注。
今日熱榜
158歲范偉妻子曝光,原來是大家熟悉的她!兩人結婚30年恩愛如初熱度93萬
2杭州男子幫女同事接了個電話 卻被她老公暴打!只因為脫口而出的一句話……熱度63萬
3岳陽一賣淫團伙覆滅!單次收費130,當場抓獲違法人員4名熱度61萬
遲到兩年的Bug修復,卻意外地吸引了眼球?
2016年8月份,一群開發者向谷歌提交了一份常規的Bug報告——報告顯示,當他們嘗試通過藍牙連接安卓手機與XBOX One手柄時,卻發現兩者之間存在著嚴重的按鍵映射錯誤。打比方說,明明在手柄上按了「←」,但系統里卻以為按下的是「A」鍵——而且嚴重的時候,在不同的程序里這種按鍵映射錯誤還各不相同。
圖片來自Android Police
當然,稍有常識的游戲玩家都知道,按鍵映射本身不算多嚴重的問題。真要修復起來也不麻煩。但令人沒有想到的是,就是這么簡單的一個Bug,谷歌卻一直拖延了兩年時間之久,才終於在最近宣布Bug解決……
更令人沒有想到的是,就是這么一個簡單的、開發者向的消息,卻引發了超乎想像的關注——事實上,無論是在國內還是國外的各種科技咨詢網站上,筆者都看到了轉載都報道「安卓修復與XBOX手柄的兼容性問題」……
是的,玩家們有理由高興,但它有玩家么?
為何一則短短的、專業的系統Bug修復信息會引發如此多的報道與關注?它同時涉及到了「谷歌」和「微軟」兩家巨頭,自然是重要的原因之一。但如果並不是因為單純這個原因的話,那麼問題的關鍵,可能就出在「安卓系統連接XBOX One手柄」這件事本身的意義上了。
在知名的海外安卓技術站Android Police上,我們看到了更詳細的關於這件事的報道。Android Police的編輯們甚至還專門對修復之後的手柄兼容性進行了測試——值得注意的是,他們主要是通過運行游戲的方式來測試的。也就是說,在這幾位老外看來,舊有的Bug主要影響的是那些希望用Xbox One S手柄,在安卓手機或者平板上玩游戲的用戶。而如今,問題得到解決,這些用戶應該感到高興了!
emmmm……看起來似乎很有道理,但只有一個問題——會有人使用Xbox手柄,卻在安卓設備上玩游戲么?
其實,對於這件事,中國的玩家們或許有著更大的發言權。只要在各大在線商城隨便搜索一下熱賣的「吃雞神器」、「手游神器」,你就會發現大量價廉物美的手機專用游戲手柄。它們不僅價格遠低於Xbox One S的原裝手柄,還會設計有便於固定在手機上的卡扣、握把或是其他機構——有趣的是,索尼也曾為PS4手柄推出類似的手機固定套件,但是微軟始終沒有過。這就不禁令人懷疑——Xbox手柄是否本身根本就沒有為在手機上使用而設計?如果沒有,那麼又會有多少真正的玩家,具備非要使用Xbox One手柄連接安卓手機玩游戲的需求?
其實,大家或許從一開始就弄錯了一件事
從2016年8月收到用戶反饋,到2018年8月宣布Bug修復,谷歌的工程師們花了差不多整整兩年才解決了這個看起來並不復雜的手柄按鍵映射問題。是怎樣的困難導致需要如此漫長的時間來修復一個簡單的Bug?據筆者熟識的一位專家透露,真實的原因很可能與技術難度完全無關,而是在於「問題本身太小眾、請求的人數太少」。
其實,從前文的分析也不難看出,所謂「用Xbox One手柄連接安卓設備玩游戲,發現按鍵映射存在Bug」,這件事本身是千真萬確沒錯。但由此得出「最初請求修復Bug的人一定是游戲玩家」,這個推斷卻並不見得正確。
要知道,作為當前全球最有影響力的主機手柄之一,同時也是全球研發成本最高的主機手柄(這個沒有之一),Xbox One手柄真正的價值決不在於它是否能連接手機玩手游,而在於它是許多工程設計項目、甚至是軍事領域的「常客」。

熱點內容
為什麼租憑伺服器不能玩了 發布:2025-07-04 09:03:01 瀏覽:984
安卓手機減肥軟體哪個好 發布:2025-07-04 08:51:17 瀏覽:995
Oracle查看資料庫歸檔 發布:2025-07-04 08:44:53 瀏覽:607
950買什麼配置好 發布:2025-07-04 08:39:39 瀏覽:610
怎樣給應用加密 發布:2025-07-04 08:38:41 瀏覽:458
python的注釋符號 發布:2025-07-04 08:29:19 瀏覽:129
守望領域門禁密碼是多少 發布:2025-07-04 08:16:22 瀏覽:333
存儲晶元價格 發布:2025-07-04 08:16:20 瀏覽:356
大地球源碼 發布:2025-07-04 08:10:29 瀏覽:168
棋牌手游源碼 發布:2025-07-04 08:10:18 瀏覽:818