当前位置:  编程技术>移动开发
本页文章导读:
    ▪NSFileManager惯用的一些操作        NSFileManager常用的一些操作 1.获取文件的最后修改时间:   NSDictionary* fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil]; DLog(@"%@", [fileAttributes objectForKey:NSFileModificationDate]);  .........
    ▪ widget的打造步骤        widget的制作步骤 下面介绍一下widget的制作步骤: 1.申明AppWidgetProvider类在应用的AndroidManifest.xml文件里 <receiver android:name="com.Demo_barcodeWidget.BarcodeWidgetProvider"             android:icon="@dr.........
    ▪ Activity其间的传值       Activity之间的传值 Activity之间的传值:   方法1: 1给2传值 Activity1:   final Intent intent = new Intent(mCtx,Activity1.class) ; //将当前用户传递下去 intent.putExtra("user", mUser); startActivity(intent);  里边mU.........

[1]NSFileManager惯用的一些操作
    来源: 互联网  发布时间: 2014-02-18
NSFileManager常用的一些操作

1.获取文件的最后修改时间:

 

NSDictionary* fileAttributes = [[NSFileManager defaultManager]    attributesOfItemAtPath:path error:nil];
DLog(@"%@",  [fileAttributes objectForKey:NSFileModificationDate]);

 

2.遍历目录下的符合条件的文件:

 

NSArray* fiieList  = [ [[NSFileManager defaultManager] contentsOfDirectoryAtPath:kNotUploadXmlFolder error:nil] 
						  pathsMatchingExtensions:[NSArray arrayWithObject:@"xml"]];
DLog(@"%@", fiieList);

 

3.删除某个文件:

 

[[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/11.xml", kNotUploadXmlFolder] error:nil];

 

4. 检测某个文件是否存在

[[NSFileManager defaultManager]fileExistsAtPath:kDatabaseFullPath]
//这里kDatabaseFullPath必须是全路径,eg:/users/xxx/111/database.db

 


    
[2] widget的打造步骤
    来源: 互联网  发布时间: 2014-02-18
widget的制作步骤
下面介绍一下widget的制作步骤:
1.申明AppWidgetProvider类在应用的AndroidManifest.xml文件里 <receiver android:name="com.Demo_barcodeWidget.BarcodeWidgetProvider"
            android:icon="@drawable/homenav_barcode"
            android:label="Yellowbook Barcode Scanner">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/barcode_widget" />
        </receiver>


•<intent-filter>元素必须包含带有android:name属性的<action>元素。这一属性指明 AppWigetProvider可接收ACTION_APPWIDGET_UPDATE广播。这是你必须明确声明的唯一广播。 AppWidgetManager自动发送Widget广播到AppWidgetProvider。
•     <meta-data>元素指明AppWidgetProviderInfo资源,需要如下属性:android:name-指明元数据名称。使用android.appwidget.provider把数据指定为对AppWidgetProviderInfo的描述。
      android:resource-指明AppWidgetProviderInfo资源的位置。

2. 增加AppWidgetProviderInfor元数据在res/xml/widget_provider.xml中:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="47dip"
    android:minHeight="44dip"
    android:updatePeriodMillis="10000"
    >
</appwidget-provider>


•这个文件放在res/xml/文件夹下,若res中没有xml文件夹,则需新建一个。
•注:AppWidgetProviderInfo 定义基本的Widget属性,如最小布局维数,初始的布局资源,更新Widget频率和在创建时间启动Activity的配置。在XML资源里使用单一的<appwidget-provider>元素定义AppWidgetProviderInfo对象并且把它保存在工程的res/xml /文件夹下。

3. 创建Widget布局文件在res/layout/中:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="/blog_article/@drawable/homenav_barcode/index.html" android:id="@+id/barcode_widget_logo"
    android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>



•这是widget在桌面显示的layout。本例中很简单,只有一个imageview。
•你必须在XML里为你的Widget定义一个初始的布局文件,然后保存在工程的res/layout/目录下。如果你熟悉在XML中声明布局,那么创建 Widget布局是简单的。你可以使用View对象设计你的Widget,然而你必须注意Widget基于RemoteViews,它并不支持布局或者 view控件中的每一种。

4.创建appWidgetProvider类

package com.Demo_barcodeWidget;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;

public class BarcodeWidgetProvider extends AppWidgetProvider{
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
        RemoteViews mRemoteViews = buildUpdate(context);
        ComponentName thisWidget = new ComponentName(context, BarcodeWidgetProvider.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(thisWidget, mRemoteViews);
    }

    private RemoteViews buildUpdate(Context context) {
        RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.barcode_scanner_widget);
        Intent i = new Intent(context, Demo_barcodeWidget.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        rv.setOnClickPendingIntent(R.id.barcode_widget_logo, PendingIntent.getActivity(context, 0, i, 0));
        return rv;
    }
}


•继承于BroadcastReceiver的AppWidgetProvider类是一种很方便处理Widget广播的类。 AppWidgetProvider只接收与Widget相关的事件广播,如当Widget更新,删除,可用和不可用的时候。当这些广播事件发生的时候,AppWidgetProvider收到如下的方法调用:onUpdated,onDeleted,onEnabled,onDisabled,onReceive。
•最重要的AppWidgetProvider回调函数是onUpdated,因为当每一个Widget增加的时候它都会被调用(除非你使用配置 Activity)。如果你的Widget接收任意用户交互事件,那么你需要在回调函数中注册事件handler。如果你的Widget没有创建临时文件或者数据库,或者执行需要clean-up的工作,那么onUpdated可能是你需要注册的唯一回调函数。
•这里使用 remoteView来实现widget的事件响应(onclick事件)和widget页面的显示刷新(实际上本例很简单,只是说明widget的制作步骤。并没有显示什么数据,而widget得click事件也只是跳转到程序的main activity)。实际上widget功能丰富:别看它们小,却服务周到,它可以为你报告新闻、帮你买东西、列出你最喜欢的乐队,还有你最近看的视频。另外,它还是一个殷勤的管家,你不必亲自去Flickr或者天气预报网站,Widget会将信息主动带给你。Widget可以以多种形式呈现出来,幻灯秀、视频、地图、新闻、小游戏……

    
[3] Activity其间的传值
    来源: 互联网  发布时间: 2014-02-18
Activity之间的传值

Activity之间的传值:

 

方法1: 1给2传值

Activity1:

 

		final Intent intent = new Intent(mCtx,Activity1.class) ;
		//将当前用户传递下去
		intent.putExtra("user", mUser);
		startActivity(intent);

 里边mUser是一个对象,传的事实上是一个Map,"user"是对象mUser的key

 

 

Activity2:

 

 

 mUser = (User) getIntent().getSerializableExtra("user");

 

 

mUser是对象,getIntent()是Activity的方法,值得注意的是得到的mUser 不是引用,而是new了一个对象并赋值,如果这东西要回传的话,要startActivity(intent);就会很SB。

所以用方法2

 

------------------------------------------------

 

方法2:

 

Activity1:

 

 

			intent.setClass(mCtx, Activity2.class);
			intent.putExtra("user", mUser);
			startActivityForResult(intent, 1);

 

 并且在Activity1中

 

	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		
		
		super.onActivityResult(requestCode, resultCode, data);
		
		if(resultCode==1 || data.getSerializableExtra("putUserbyhua")!=null)
			mUser=(User) getIntent().getSerializableExtra("putUserbyhua");
	}
 

 

 

Activity2:

 

获取传来的值

 

 

mIntent = getIntent() 
mUser=(User) mIntent.getSerializableExtra(UserConst.USER_DATA);

 

在按返回键时跳转到1

 

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		
		 if(keyCode == KeyEvent.KEYCODE_BACK){
				final Intent intent=new Intent();
				intent.setClass(mCtx, Activity2.class);
				intent.putExtra("putUserbyhua",mUser);
				this.setResult(1);
				this.finish();
			
		 }
		return super.onKeyDown(keyCode, event);
	}
 

 

1 楼 doloveme 2011-05-10  
<p ><span ><span >Android中Activity共享变量的另一方法:Application context:</span></span></p>
<p> 多个Activity中经常使用同一变量时,使用Bundle则比较麻烦,每次调用Activity都需要设置一次。
  如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。
 </p>
<p> 新建一个类,继承自Application</p>
<p> </p>
<p> </p>
<pre name="code" > class MyApp extends Application {
  private String myState;
  public String getState() {
  return myState;
  }
  public void setState(String s) {
  myState = s;
  }
  }
  class MyApp extends
  Application {
  private String myState;
  public String getState() {
  return myState;
  }
  public void setState(String s) {
  myState = s;
  }
  }</pre>
<p> </p>
<p> </p>
<p> </p>
<p><span Microsoft Yahei', Simsun; font-size: 14px; line-height: 21px;">在AndroidManifest.xml的application加个name属性就可以了,如下面所示:<br ><br >  android:name=".MyApp" android:icon="@drawable/icon"<br >  android:label="@string/app_name"&gt;</span></p>
<p> </p>
<p><span Microsoft Yahei', Simsun; font-size: 14px; line-height: 21px;">使用时:</span><span Microsoft Yahei', Simsun; font-size: 14px; line-height: 21px;"><span >(这个是重点)</span></span></p>
<p> </p>
<p> </p>
<pre name="code" > class Blah extends Activity {

@Override
  public void onCreate(Bundle b){
  ...
  MyApp appState = ((MyApp)getApplicationContext());
  String state = appState.getState();
  ...
  }
  }
  class Blah extends
  Activity {
  @Override
  public void onCreate(Bundle b){
  ...
  MyApp appState = ((MyApp)getApplicationContext());
  String state = appState.getState();
  ...
  }
  }</pre>
 
<p> </p>
<p> </p>
<p> </p>
<p><span >当然搞个单例也可以啊,呵呵,以后研究</span></p>
<p> </p>
2 楼 windfree 2011-05-16  
楼主总结的不错,application确实很方便
3 楼 myyuren 2011-05-16  
我遇到了一个这方面的问题,还请楼主解答。
http://topic.csdn.net/u/20110513/14/6b948267-4a2f-4f0d-9318-8f6e685bb5d8.html
这是连接。
activity A 跳向 activity B 时,传递一个List<对象> 出现黑屏现 象,有网友说是oncreate事件加载过多数据,list.size()==500左右的时候就开始黑屏。
4 楼 jstl1point0 2011-05-16  
application 共享很不错。
5 楼 xucm1986 2011-05-17  
我们一直都用application
6 楼 xucm1986 2011-05-17  
application的生命周期知道哪为大虾可以指点下,在下不身感激
7 楼 doloveme 2011-05-17  
xucm1986 写道
application的生命周期知道哪为大虾可以指点下,在下不身感激


从程序开始,到结束
8 楼 doloveme 2011-05-17  
myyuren 写道
我遇到了一个这方面的问题,还请楼主解答。
http://topic.csdn.net/u/20110513/14/6b948267-4a2f-4f0d-9318-8f6e685bb5d8.html
这是连接。
activity A 跳向 activity B 时,传递一个List<对象> 出现黑屏现 象,有网友说是oncreate事件加载过多数据,list.size()==500左右的时候就开始黑屏。



这个我不大清楚,跳转和传数据应该是不同的线程吧,如果页跳过去了,数据还没传完,而数据和页面信息相关性很大,应该会出现这种情况,或者也是android的bug.应该加入同步支持,你可以试验一下,呵呵
9 楼 doloveme 2011-05-17  
jstl1point0 写道
application 共享很不错。


是的,给人一种一气呵成的感觉,不然会穿一堆特别sb的变量而且,会有修改的先后之分。

但是不知道application对于bean修改权限什么的,有没有逻辑上的安全隐患啊
10 楼 doloveme 2011-05-17  
<div >doloveme 写道</div>
<div >
<p ><span ><span >Android中Activity共享变量的另一方法:Application context:</span></span></p>
<p> 多个Activity中经常使用同一变量时,使用Bundle则比较麻烦,每次调用Activity都需要设置一次。
  如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。
 </p>
<p> 新建一个类,继承自Application</p>
<p> </p>
<p> </p>
<pre name="code" > class MyApp extends Application {
  private String myState;
  public String getState() {
  return myState;
  }
  public void setState(String s) {
  myState = s;
  }
  }

  </pre>
<p> </p>
<p> </p>
<p> </p>
<p><span Microsoft Yahei', Simsun; font-size: 14px; line-height: 21px;">在AndroidManifest.xml的application加个name属性就可以了,如下面所示:<br><br>  android:name=".MyApp" android:icon="@drawable/icon"<br>  android:label="@string/app_name"&gt;</span></p>
<p> </p>
<p><span Microsoft Yahei', Simsun; font-size: 14px; line-height: 21px;">使用时:</span><span Microsoft Yahei', Simsun; font-size: 14px; line-height: 21px;"><span >(这个是重点)</span></span></p>
<p> </p>
<p> </p>
<pre name="code" > class Blah extends Activity {

@Override
  public void onCreate(Bundle b){
  ...
  MyApp appState = ((MyApp)getApplicationContext());
  String state = appState.getState();
  ...
  }
  }
  class Blah extends
  Activity {
  @Override
  public void onCreate(Bundle b){
  ...
  MyApp appState = ((MyApp)getApplicationContext());
  String state = appState.getState();
  ...
  }
  }</pre>
 
<p> </p>
<p> </p>
<p> </p>
<p><span >当然搞个单例也可以啊,呵呵,以后研究</span></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><span >事实上 application就是一种他妈的单例</span></p>
<p> </p>
</div>
<p> </p>
11 楼 amaker8 2011-05-19  
LZ上个能运行的实例。。。
12 楼 doloveme 2011-05-20  
amaker8 写道
LZ上个能运行的实例。。。


你这是肯定句,疑问句,还是反问句啊
13 楼 doloveme 2011-05-20  
amaker8 写道
LZ上个能运行的实例。。。


哦,刚看懂,我一会上一个,呵呵
14 楼 doloveme 2011-05-20  
现在好了,有代码了

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
javascript开源软件 iis7站长之家
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3