为了账号安全,请及时绑定邮箱和手机立即绑定

如何在MainActivity之前启动Java类

如何在MainActivity之前启动Java类

白衣染霜花 2021-05-12 14:10:30
我正在创建一个需要在运行和启动Main Activity之前运行Java类的项目。我的Java类是:Bluetooth.java,register.java,DatabaseHelper.java。我需要运行的程序顺序:蓝牙>注册> MainActivity。MainActivity是唯一具有布局的Activity。我已经做了什么:我删除了蓝牙中的setContentView并注册,因为它们没有布局。我曾经打算将一项活动引向另一项活动。蓝牙注册然后注册到MainActivity我将AndroidManifest更改为以下代码:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.windows8.registerlogin"><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".Bluetooth" >    <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />    </intent-filter></activity><activity android:name=".Register"    android:label="@string/app_name"/><activity android:name=".MainActivity"    android:label="@string/app_name"/></application></manifest>启动程序后,它突然关闭,我无法执行任何操作。你能告诉我我的程序怎么了吗?还是我遗漏了一些东西?谢谢。(看来我无法在此处发布我的日志猫)
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

从应用程序类调用蓝牙类。像这样


public class AppTest extends Application {


@Override

public void onCreate() {

    super.onCreate();

   //Call your bluetooth class

}

}

并在androidmanifest文件中添加应用程序类名称:


<application

    android:name=".AppTest">


查看完整回答
反对 回复 2021-05-26
?
呼如林

TA贡献1798条经验 获得超3个赞

使用启动器活动是个好主意,但请确保不要通过初始化内容onCreate或将上下文泄漏给匿名AsyncTask来锁定UI线程。根据您的描述,无需进行蓝牙和注册。假设这是正确的,并且您可以使它们成为独立的类,下面是一个看起来类似的示例:


private AsyncTask<Void, Void, Integer> loader = null;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.launcher_activity);

    loader = new LoadStuff(this);

    loader.execute();

}


@Override

public void onDestroy() {

    super.onDestroy();

    if( loader != null ) {

        loader.cancel(true);

        loader = null;

    }

}


static class LoadStuff extends AsyncTask<Void, Void, Integer> {


    WeakReferences<Activity> context;


    LoadStuff(Activity context) {

        this.context = new WeakReference<>(context);

    }


    @Override

    protected void onPreExecute() {

    }


    @Override

    protected Integer doInBackground(Void... params) {

        // assuming they're singletons

        Bluetooth.initialize();

        Register.initialize();

        return 0; // or pass an error code if these fail

    }


    @Override

    protected void onPostExecute(Integer result) {

        Activity c = context.get();

        if( c != null ) {

            Intent intent = new Intent(c, MainActivity.class);

            c.startActivity(intent);

            c.finish(); // don't let the user come back to this screen

        }

    }

}


查看完整回答
反对 回复 2021-05-26
  • 3 回答
  • 0 关注
  • 321 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信