1.主Activity:
private TextView tx;
private Button btn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(150, 40);
param.topMargin = 5;
tx = new TextView(this);
tx.setTextSize(16);
tx.setTextColor(Color.BLUE);
// tx.setBackgroundResource(R.drawable.x_yellow);
layout.addView(tx, param);
btn = new Button(this);
btn.setText("Exit");
// btn.setBackgroundResource(R.drawable.earth);
btn.setOnClickListener(this);
layout.addView(btn, param);
this.setContentView(layout);
String tna = Thread.currentThread().getName();
Thread.currentThread().setName(tna + "-Ac_and_Se");
MyService.setUpdateListener(new UpdateUIListener());
Intent svc = new Intent(this, MyService.class);
startService(svc);
}
public void onClick(View v) {
this.finish();
}
class UpdateUIListener implements IListener {
public void update(String s) {
System.out.println("__________________"+s);
tx.setText(s);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
{
Intent svc = new Intent(this, MyService.class);
stopService(svc);
}
}
2.监听线程的Services:
public class MyService extends Service {
// 监听器对象的实例
private static IListener plis;
// private static int k = 0;
private Timer timer = new Timer();
private String tna;
public Handler handler = new Handler() {
public void handleMessage(Message msg) {
plis.update(tna);
}
};
@Override
public void onCreate() {
super.onCreate();
tna = Thread.currentThread().getName();
TimerTask task = new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(0);
}
};
timer.schedule(task, 1000, 4000);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public static void setUpdateListener(IListener listener) {
plis = listener;
}
}
3.最后是一个简单的接口:
public interface IListener {
public void update(String s);
}
当然这个Services一定要在Manifest.xml中进行申明:
<service android:name=".MyService"></service>
分享到:
相关推荐
8. **通知(Notifications)**:这部分代码将展示如何创建和管理通知,包括使用NotificationCompat库创建兼容不同版本Android的通知,以及使用通知频道(Channels)来提高用户体验。 9. **多线程与异步任务**:...
2. **布局管理器(Layout Managers)**:Android提供多种布局管理器,如LinearLayout、RelativeLayout和ConstraintLayout,用于控制UI元素的排列方式。理解这些布局的工作原理,以及何时选择哪种布局,能有效优化...
3. **Location Services**: 利用Google Play服务提供的Location Services,可以获取精确的地理位置信息,包括速度、方向和海拔等。 4. **通知和警告机制**: 当车速超过预设阈值时,应用需要能够触发通知或警告。这...
2. **Layout设计**:Android提供多种布局管理器,如LinearLayout、RelativeLayout、GridLayout等,源代码会展示如何灵活运用它们来构建复杂的用户界面。 3. **数据存储**:Android支持SQLite数据库、...
5. **Layouts**:布局是定义用户界面的方式,常见的有LinearLayout、RelativeLayout、ConstraintLayout等,用于组织和定位应用的UI元素。 6. ** Views & Widgets**:Views是构成用户界面的基本元素,如按钮、文本框...
在第十章的代码中,你可能会发现如何创建、启动和管理Activity,以及如何通过Intent进行Activity间的通信。 2. **Layouts**: Android布局是构建用户界面的基础。从LinearLayout、RelativeLayout到FrameLayout,不同...
1. **布局管理器(Layout Managers)**:如LinearLayout、RelativeLayout、GridLayout和ConstraintLayout等,它们用于组织和控制屏幕上控件的排列方式。 2. **自定义View**:讲解如何创建和扩展Android的内置视图类...
10. **Multithreading**:由于Android UI操作必须在主线程中执行,因此为了进行耗时操作(如网络请求或数据库操作),通常需要使用子线程,如AsyncTask、IntentService或使用现代的Coroutines库。 11. **Android ...
最后的单元可能包含了一些高级主题,如服务(Services)、广播接收器(BroadcastReceiver)、通知(Notifications)和多线程编程。服务可以长时间运行在后台,广播接收器可以监听系统或自定义事件,而通知则能提醒...
2. **布局设计**:在XML布局文件中,开发者需要创建一个视图区域来容纳横幅广告,通常是LinearLayout或RelativeLayout的一部分。 3. **Ad SDK集成**:集成Google AdMob或其他广告网络的SDK,这些SDK提供了必要的API...
5. **BroadcastReceiver**:广播接收器可以监听系统或自定义广播事件,实现异步通信。 6. **Services**:后台运行的服务,不与用户交互,常用于执行长时间任务。 7. **ContentProvider**:数据共享机制,使得应用...
10. **Android SDK**:熟悉Android SDK中的各种服务和API,如多媒体处理(MediaPlayer、ExoPlayer)、网络通信(HttpURLConnection、OkHttp、Retrofit)、通知(Notification)、定位(LocationServices)等。...
5. **事件处理**:理解如何监听用户交互,如点击事件,并编写响应的Java代码进行处理,是Android开发的基础技能。 6. **数据存储**:Android提供了多种数据存储方式,包括SharedPreferences(轻量级偏好设置),...
2. **服务(Services)**:手机卫士可能包含后台运行的服务,如定期扫描病毒、监控内存使用情况等。Service组件用于在后台执行长时间任务,即使用户离开应用程序也能继续运行。 3. **广播接收器(Broadcast ...
2. **布局设计**:项目可能采用了XML布局文件来定义用户界面,包括各种视图元素(如TextView、ImageView、RecyclerView等),以及布局管理器(如LinearLayout、RelativeLayout、ConstraintLayout)来组织这些元素,...
在Android开发领域,官方网站Android Developer提供了丰富的资源和教程,其中包括一系列实用的例子代码,帮助开发者深入理解和应用Android SDK的各种功能。这些例子涵盖了从基础组件到高级特性的广泛内容,旨在提升...
7. **异步编程与线程**:Android主线程负责UI操作,因此非UI任务通常在子线程中执行。这可能涉及到AsyncTask、Handler、Thread或使用现代库如Retrofit、Coroutines进行网络请求和数据处理。 8. **依赖注入框架**:...
9. **Broadcast Receivers**: 广播接收器可以监听系统广播事件,例如设备重启、网络状态改变等,从而在这些事件发生时执行相应操作。 10. **Threads与AsyncTask**: Android应用的主线程(UI线程)负责处理用户交互...
- 讲解不同的布局管理器,如LinearLayout、RelativeLayout、ConstraintLayout的使用场景和特点。 - 介绍自定义View的创建过程,包括绘制和事件处理。 - 讨论如何优化UI性能,例如使用ViewStub、避免嵌套布局和...
- **SQLite数据库**:讲解创建、操作SQLite数据库,包括CRUD(创建、读取、更新、删除)操作。 - **File I/O**:学习读写本地文件,了解内部存储和外部存储的区别。 ### 6. 进程和线程 - **进程**:介绍Android进程...