activity

Android中TabWidget的应用

 ̄綄美尐妖づ 提交于 2019-11-27 05:40:09
步骤 1.建立两个Activity,作为tab内容 (我这里是OneActivity、TestActivity) public class OneActivity extends Activity { public void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; TextView textview = new TextView ( this ) ; textview. setText ( "This is the Artists tab" ) ; setContentView ( textview ) ; } } 2.在layout文件夹中建立tab.xml用于怎样显示tab页面 注意:TabHost ,TabWidget ,FrameLayout的ID必须分别为@android:id/tabhost,@android:id/tabs,@android:id/tabcontent 另外还要注意一下android:layout_width宽度和android:layout_height高度的取值,还要LinearLayout的android:orientation=”vertical”(LinearLayout默认是横向的

android studio接入支付宝

久未见 提交于 2019-11-27 04:25:30
支付宝后台申请appid 秘钥…等数据 1.将支付宝的libs下的jar拷贝到自己项目中 添加为依赖库 2.在Androidmanifest.xml中添加 <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" > </activity> <activity android:name="com.alipay.sdk.app.H5AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" > </activity> <!-- 支付宝 sdk

Service与Activity通信

霸气de小男生 提交于 2019-11-27 03:29:01
1、怎样在启动一个Service时向它传递数据   关键点:Intent传值,onStartCommand()接收。   2、怎样向运行的Service中同步数据   关键点:通过onBind()获取Service实例,然后再调用Binder中的相关方法。   3、怎样侦听Service中数据变化   关键点:通过回调函数达到目的。 一、准备Service   先贴出Service的详细代码,然后再慢慢分析 public class MyService extends Service { private String data = "默认消息"; private boolean serviceRunning = false; // 必须实现的方法,用于返回Binder对象 @Override public IBinder onBind(Intent intent) { System.out.println("--onBind()--"); return new MyBinder(); } public class MyBinder extends Binder { MyService getService() { return MyService.this; } public void setData(String data) { MyService.this.data =

Android插件化——Hook技术

为君一笑 提交于 2019-11-26 23:54:18
1、Hook技术之动态代理 Hook技术的基础和必备技术是动态代理,关于动态代理的使用和原理参见 Java动态代理 2、Binder Hook(Hook 系统服务) 2.1、系统获取服务的原理 ContextImpl.getSystemService(String name) @Override public Object getSystemService ( String name ) { return SystemServiceRegistry . getSystemService ( this , name ) ; } public static Object getSystemService ( ContextImpl ctx , String name ) { //1、从注册的SYSTEM_SERVICE_FETCHERS中根据名称获取ServiceFetcher ServiceFetcher < ? > fetcher = SYSTEM_SERVICE_FETCHERS . get ( name ) ; return fetcher != null ? fetcher . getService ( ctx ) : null ; //2、ServiceFetcher中创建服务 } 在使用系统服务时会直接调用Context的getSystemService()

WeakReference 在android中的应用

萝らか妹 提交于 2019-11-26 22:35:55
首先我们来看一段代码: public class AutoActivity extends Activity { Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auto); } } 上面这段代码没有什么问题,但是在handler对象创建的时候却会报警告:This Handler class should be static or leaks might occur意思是:Handler 类应该为static类型,否则可能会造成内存泄漏。为什么会造成这种情况呢?这种情况就是由于android的特殊机制造成的:当一个android主线程被创 建的时候,同时会有一个Looper对象被创建,而这个Looper对象会实现一个MessageQueue(消息队列),当我们创建一个handler对象时,而handler的 作用就是放入和取出消息从这个消息队列中

Android,谁动了我的内存(1)

不打扰是莪最后的温柔 提交于 2019-11-26 21:12:38
一、 Android的内存机制 Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁治理”,java的就比较人性化了,给我们请了一个专门的清洁工(GC)。 那么GC怎么能够确认某一个对象是不是已经被废弃了呢?Java采用了有向图的原理。Java将引用关系考虑为图的有向边,有向边从引用者指向引用对象。线程对象可以作为有向图的起始顶点,该图就是从起始顶点开始的一棵树,根顶点可以到达的对象都是有效对象,GC不会回收这些对象。如果某个对象 (连通子图)与这个根顶点不可达(注意,该图为有向图),那么我们认为这个(这些)对象不再被引用,可以被GC回收。 二、Android的内存溢出 Android的内存溢出是如何发生的? Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M,有的机器为24M。因此我们所能利用的内存空间是有限的。如果我们的内存占用超过了一定的水平就会出现OutOfMemory的错误。 为什么会出现内存不够用的情况呢?我想原因主要有两个: 由于我们程序的失误,长期保持某些资源(如Context)的引用,造成内存泄露,资源造成得不到释放。 保存了多个耗用内存过大的对象

Android Intent Flag的介绍

女生的网名这么多〃 提交于 2019-11-26 19:57:33
一、Activity和Task(栈)的关系   Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最低端。从Task中取出东西(Activity)则是从最顶端取出,也就是说最先取出的是最后添加的东西(Activity),一次类推,最后取出的是第一次添加的Activity,而Activity在Task中的顺序是可以控制的,那则在Activity跳转时用到Intent Flag   二、界面跳转和服务的启动都会用到Intent,现在介绍Intent Flag是关于Activity的跳转   Intent intent = new Intent(this,xxx.class);   //如果activity在task存在,拿到最顶端,不会启动新的Activity   intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);   //如果activity在task存在,将Activity之上的所有Activity结束掉   intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   //默认的跳转类型,将Activity放到一个新的Task中   intent.addFlags(Intent

关于AlertDialog.Builder(Context context)中所应传入的context

℡╲_俬逩灬. 提交于 2019-11-26 18:22:13
错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main 10-20 14:34:46.565: E/AndroidRuntime(23098): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 问题分析: 在AlertDialog.Builder(Context context)方法中我传入了getApplicationContext(),一般情况下传入整个应用的上下文是没有问题的,但是AlertDialog的构建是需要一个父Activity的,因此必须传入一个准确的Activity的上下文。 解决办法: 将getApplicationContext()改为xxxActivity.this 转载于:https://www.cnblogs.com/AllenWen/p/4037195.html 来源: https://blog.csdn.net/weixin_30795127/article/details/99011639

ScreenUtils

僤鯓⒐⒋嵵緔 提交于 2019-11-26 17:30:45
/** * 获得屏幕相关的辅助类 */ public class ScreenUtils { private ScreenUtils() { throw new UnsupportedOperationException("cannot be instantiated"); } public static int getDrawerWidth(Resources res) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { if (res.getConfiguration().smallestScreenWidthDp >= 600 || res.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // device is a tablet return (int) (320 * res.getDisplayMetrics().density); } else { return (int) (res.getDisplayMetrics().widthPixels - (70 * res.getDisplayMetrics().density)); } } else { // for devices

PowerManagerService(一)

岁酱吖の 提交于 2019-11-26 16:51:52
极力推荐Android 开发大总结文章:欢迎收藏 程序员Android 力荐 ,Android 开发者需要的必备技能 PowerManagerService 提供Android系统的电源管理服务,主要功能是控制系统待机状态,屏幕显示,亮度调节,光线/距离传感器的控制等。 相关代码在以下文件中: frameworks/base/services/java/com/android/server/SystemServer.java frameworks/base/core/java/android/os/PowerManager.java frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java frameworks/base/services/core/jni/com_android_server_power_PowerManagerService.cpp frameworks/base/core/java/android/os/PowerManagerInternal.java frameworks/base/services/core/java/com/android/server/power/Notifier.java device/qcom/common/power